Splitter

Splits a string r using a regular expression pat as a separator.

  1. struct Splitter(Flag!"keepSeparators" keepSeparators = No.keepSeparators, Range, alias RegEx = Regex)
    struct Splitter (
    Flag!"keepSeparators" keepSeparators = No.keepSeparators
    Range
    alias RegEx = Regex
    ) if (
    isSomeString!Range &&
    isRegexFor!(RegEx, Range)
    ) {}
  2. Splitter!(keepSeparators, Range, RegEx) splitter(Range r, RegEx pat)

Members

Functions

popFront
void popFront()
empty
bool empty [@property getter]

Forward range primitives.

Properties

front
Range front [@property getter]
save
auto save [@property getter]

Forward range primitives.

Return Value

A lazy range of strings

Examples

import std.algorithm.comparison : equal;
auto s1 = ", abc, de,  fg, hi, ";
assert(equal(splitter(s1, regex(", *")),
    ["", "abc", "de", "fg", "hi", ""]));

Split on a pattern, but keep the matches in the resulting range

import std.algorithm.comparison : equal;
import std.typecons : Yes;

auto pattern = regex(`([\.,])`);

assert("2003.04.05"
    .splitter!(Yes.keepSeparators)(pattern)
    .equal(["2003", ".", "04", ".", "05"]));

assert(",1,2,3"
    .splitter!(Yes.keepSeparators)(pattern)
    .equal([",", "1", ",", "2", ",", "3"]));

Meta

Suggestion Box / Bug Report