Function std.algorithm.mutation.stripLeft
The strip group of functions allow stripping of either leading, trailing, or both leading and trailing elements.
Range stripLeft(Range, E)
(
Range range,
E element
)
if (isInputRange!Range && is(typeof(range .front == element) : bool));
Range stripLeft(alias pred, Range)
(
Range range
)
if (isInputRange!Range && is(typeof(pred(range .front)) : bool));
The stripLeft
function will strip the front
of the range,
the stripRight
function will strip the back
of the range,
while the strip
function will strip both the front
and back
of the range.
Note that the strip
and stripRight
functions require the range to
be a BidirectionalRange
range.
All of these functions come in two varieties: one takes a target element, where the range will be stripped as long as this element can be found. The other takes a lambda predicate, where the range will be stripped as long as the predicate returns true.
Parameters
Name | Description |
---|---|
range | a bidirectional range or input range |
element | the elements to remove |
Returns
a Range with all of range except element at the start and end
Example
Strip leading and trailing elements equal to the target element.
writeln(" foobar " .strip(' ')); // "foobar"
writeln("00223.444500" .strip('0')); // "223.4445"
writeln("ëëêéüŗōpéêëë" .strip('ë')); // "êéüŗōpéê"
writeln([1, 1, 0, 1, 1] .strip(1)); // [0]
writeln([0.0, 0.01, 0.01, 0.0] .strip(0) .length); // 2
Example
Strip leading and trailing elements while the predicate returns true.
writeln(" foobar " .strip!(a => a == ' ')()); // "foobar"
writeln("00223.444500" .strip!(a => a == '0')()); // "223.4445"
writeln("ëëêéüŗōpéêëë" .strip!(a => a == 'ë')()); // "êéüŗōpéê"
writeln([1, 1, 0, 1, 1] .strip!(a => a == 1)()); // [0]
writeln([0.0, 0.01, 0.5, 0.6, 0.01, 0.0] .strip!(a => a < 0.4)() .length); // 2
Example
Strip leading elements equal to the target element.
writeln(" foobar " .stripLeft(' ')); // "foobar "
writeln("00223.444500" .stripLeft('0')); // "223.444500"
writeln("ůůűniçodêéé" .stripLeft('ů')); // "űniçodêéé"
writeln([1, 1, 0, 1, 1] .stripLeft(1)); // [0, 1, 1]
writeln([0.0, 0.01, 0.01, 0.0] .stripLeft(0) .length); // 3
Example
Strip leading elements while the predicate returns true.
writeln(" foobar " .stripLeft!(a => a == ' ')()); // "foobar "
writeln("00223.444500" .stripLeft!(a => a == '0')()); // "223.444500"
writeln("ůůűniçodêéé" .stripLeft!(a => a == 'ů')()); // "űniçodêéé"
writeln([1, 1, 0, 1, 1] .stripLeft!(a => a == 1)()); // [0, 1, 1]
writeln([0.0, 0.01, 0.10, 0.5, 0.6] .stripLeft!(a => a < 0.4)() .length); // 2
Example
Strip trailing elements equal to the target element.
writeln(" foobar " .stripRight(' ')); // " foobar"
writeln("00223.444500" .stripRight('0')); // "00223.4445"
writeln("ùniçodêéé" .stripRight('é')); // "ùniçodê"
writeln([1, 1, 0, 1, 1] .stripRight(1)); // [1, 1, 0]
writeln([0.0, 0.01, 0.01, 0.0] .stripRight(0) .length); // 3
Example
Strip trailing elements while the predicate returns true.
writeln(" foobar " .stripRight!(a => a == ' ')()); // " foobar"
writeln("00223.444500" .stripRight!(a => a == '0')()); // "00223.4445"
writeln("ùniçodêéé" .stripRight!(a => a == 'é')()); // "ùniçodê"
writeln([1, 1, 0, 1, 1] .stripRight!(a => a == 1)()); // [1, 1, 0]
writeln([0.0, 0.01, 0.10, 0.5, 0.6] .stripRight!(a => a > 0.4)() .length); // 3