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)
  2. Splitter!(keepSeparators, Range, RegEx) splitter(Range r, RegEx pat)
    Splitter!(keepSeparators, Range, RegEx)
    splitter
    (
    Flag!"keepSeparators" keepSeparators = No.keepSeparators
    Range
    RegEx
    )
    (
    Range r
    ,
    RegEx pat
    )
    if (
    is(BasicElementOf!Range : dchar) &&
    isRegexFor!(RegEx, Range)
    )

Parameters

keepSeparators

flag to specify if the matches should be in the resulting range

r Range

the string to split

pat RegEx

the pattern to split on

Return Value

Type: Splitter!(keepSeparators, Range, RegEx)

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