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