On Monday, 9 June 2014 at 11:16:18 UTC, monarch_dodra wrote:
On Monday, 9 June 2014 at 11:04:12 UTC, Chris wrote:
From the library reference:

assert(equal(splitter("hello world", ' '), [ "hello", "", "world" ]));

and

"If a range with one separator is given, the result is a range with two empty elements."

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

You can just pipe in an extra "filter!(a=>!a.empty)", and it'll do what you want:
put(parts, w.splitter('-').filter!(a=>!a.empty)());

The rational for this behavior, is that it preserves the "total amount of information" from your input. EG:

assert(equal(myString.spliter(sep).join(sep), myString));

If the empty tokens were all stripped out, that wouldn't work, you'd have lost information about how many separators there actually were, and where they were.

I see, I've already popped in a filter. I only wonder how much of a performance loss that is. Probably negligible.
  • splitter for strings Chris via Digitalmars-d-learn
    • Re: splitter for strings bearophile via Digitalmars-d-learn
      • Re: splitter for str... Chris via Digitalmars-d-learn
        • Re: splitter for... monarch_dodra via Digitalmars-d-learn
          • Re: splitter... Chris via Digitalmars-d-learn
            • Re: spl... monarch_dodra via Digitalmars-d-learn
              • Re:... Chris via Digitalmars-d-learn
                • ... monarch_dodra via Digitalmars-d-learn
                • ... Chris via Digitalmars-d-learn
            • Re: spl... Steven Schveighoffer via Digitalmars-d-learn
              • Re:... Chris via Digitalmars-d-learn
                • ... Steven Schveighoffer via Digitalmars-d-learn
                • ... Chris via Digitalmars-d-learn
                • ... monarch_dodra via Digitalmars-d-learn
                • ... Chris via Digitalmars-d-learn
                • ... monarch_dodra via Digitalmars-d-learn
                • ... Chris via Digitalmars-d-learn

Reply via email to