For a string 'ABBBCC', I want to produce a
list ('A', 'BBB', 'CC'). That is, break
the string into pieces based on change of character.
My Perl is getting a bit rusty and I found myself struggling today with
this simple problem. Though I've found a solution, shown below, there is
probably a better way to do it, hence my question.
Apologies if this is a FAQ.
use strict;
use warnings;
my $str = 'AAABBCCCC';
# For str 'AAABBCCCC', I want to produce a list ('AAA', 'BB', 'CCCC').
# This works ... but is there a better way to do it?
my $i = 0; # $i is used to filter out the captured $1 fields
my @x = grep { ++$i % 2 } split(/(?<=(.))(?!\1)/, $str);
for my $e (@x) { print "e='$e'\n" }
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
|
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.