View source code Display the source code in std/string.d from which this page was generated on github. Improve this page Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone. Page wiki View or edit the community-maintained wiki page associated with this page.

Function std.string.chomp

If str ends with delimiter, then str is returned without delimiter on its end. If it str does not end with delimiter, then it is returned unchanged.

If no delimiter is given, then one trailing '\r', '\n', "\r\n", '\f', '\v', std.uni.lineSep, std.uni.paraSep, or std.uni.nelSep is removed from the end of str. If str does not end with any of those characters, then it is returned unchanged.

Prototypes

Range chomp(Range)(
  Range str
)
if (isRandomAccessRange!Range && isSomeChar!(ElementEncodingType!Range) || isSomeString!Range);

Range chomp(Range, C2)(
  Range str,
  const(C2)[] delimiter
)
if ((isBidirectionalRange!Range && isSomeChar!(ElementEncodingType!Range) || isSomeString!Range) && isSomeChar!C2);

Parameters

NameDescription
str string or indexable range of characters
delimiter string of characters to be sliced off end of str[]

Returns

slice of str

Example

import std.utf : decode;
import std.uni : lineSep, paraSep, nelSep;
assert(chomp(" hello world  \n\r") == " hello world  \n");
assert(chomp(" hello world  \r\n") == " hello world  ");
assert(chomp(" hello world  \f") == " hello world  ");
assert(chomp(" hello world  \v") == " hello world  ");
assert(chomp(" hello world  \n\n") == " hello world  \n");
assert(chomp(" hello world  \n\n ") == " hello world  \n\n ");
assert(chomp(" hello world  \n\n" ~ [lineSep]) == " hello world  \n\n");
assert(chomp(" hello world  \n\n" ~ [paraSep]) == " hello world  \n\n");
assert(chomp(" hello world  \n\n" ~ [ nelSep]) == " hello world  \n\n");
assert(chomp(" hello world") == " hello world");
assert(chomp("") == "");

assert(chomp(" hello world", "orld") == " hello w");
assert(chomp(" hello world", " he") == " hello world");
assert(chomp("", "hello") == "");

// Don't decode pointlessly
assert(chomp("hello\xFE", "\r") == "hello\xFE");

Authors

Walter Bright, Andrei Alexandrescu, and Jonathan M Davis

License

Boost License 1.0.

Comments