splitter for strings
Steven Schveighoffer via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Jun 9 07:21:21 PDT 2014
On Mon, 09 Jun 2014 07:04:11 -0400, Chris <wendlec at tcd.ie> wrote:
> On Monday, 9 June 2014 at 10:54:09 UTC, monarch_dodra wrote:
>> On Monday, 9 June 2014 at 10:23:16 UTC, Chris wrote:
>>>
>>> Ok, thanks. I'll keep that in mind for the next version.
>>
>> Seems to me to also work with 2.065 and 2.064.
>
> From the library reference:
>
> assert(equal(splitter("hello world", ' '), [ "hello", "", "world" ]));
Note the 2 spaces between hello and world
> and
>
> "If a range with one separator is given, the result is a range with two
> empty elements."
Right, it allows you to distinguish cases where the range starts or ends
with the separator.
> My problem was that if I have input like
>
> auto word = "bla-";
>
> it will return parts.data.length == 2, so I would have to check
> parts.data[1] != "". This is too awkward. I just want the parts of the
> word, i.e.
>
> length == 2 // grab [0] grab [1]
> length == 1 // grab [0] (no second part, as in "bla-")
> length > 2 // do something else
One thing you could do is strip any leading or trailing hyphens:
assert("-bla-".chomp("-").chompPrefix("-").split('-').length == 1);
Just looked at std.string for a strip function that allows custom
character strippage, but apparently not there. The above is quite awkward.
-Steve
More information about the Digitalmars-d-learn
mailing list