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.

Module std.string

String handling functions.

Objects of types string, wstring, and dstring are value types and cannot be mutated element-by-element. For using mutation during building strings, use char[], wchar[], or dchar[]. The xxxstring types are preferable because they don't exhibit undesired aliasing, thus making code more robust.

The following functions are publicly imported:

Module Functions
    Publicly imported functions
std.algorithm cmp

count

endsWith

startsWith

std.array join replace replaceInPlace split
std.format format sformat
std.uni icmp toLower toLowerInPlace toUpper toUpperInPlace

There is a rich set of functions for string handling defined in other modules. Functions related to Unicode and ASCII are found in std.uni and std.ascii, respectively. Other functions that have a wider generality than just strings can be found in std.algorithm and std.range.

See Also

Functions

Name Description
abbrev Construct an associative array consisting of all abbreviations that uniquely map to the strings in values.
assumeUTF Assume the given array of integers arr is a well-formed UTF string and return it typed as a UTF string.
capitalize Capitalize the first character of s and convert the rest of s to lowercase.
center Center s in a field width characters wide. fillChar is the character that will be used to fill up the space in the field that s doesn't fill.
centerJustifier Center justify r in a field width characters wide. fillChar is the character that will be used to fill up the space in the field that r doesn't fill.
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.
chompPrefix If str starts with delimiter, then the part of str following delimiter is returned. If str does not start with
chop Returns str without its last character, if there is one. If str ends with "\r\n", then both are removed. If str is empty, then then it is returned unchanged.
column Compute column number at the end of the printed form of the string, assuming the string starts in the leftmost column, which is numbered starting from 0.
countchars Count characters in s that match pattern.
detab Replace each tab character in s with the number of spaces necessary to align the following character at the next tab stop.
detabber Replace each tab character in r with the number of spaces necessary to align the following character at the next tab stop.
entab Replaces spaces in s with the optimal number of tabs. All spaces and tabs at the end of a line are removed.
entabber Replaces spaces in range r with the optimal number of tabs. All spaces and tabs at the end of a line are removed.
fromStringz
indexOf Searches for character in range.
indexOf
indexOf Searches for substring in s.
indexOf Searches for character in range starting at index startIdx.
indexOfAny Returns the index of the first occurence of any of the elements in needles in haystack. If no element of needles is found, then -1 is returned. The startIdx slices s in the following way haystack[startIdx .. $]. startIdx represents a codeunit index in haystack. If the sequence ending at startIdx does not represent a well formed codepoint, then a std.utf.UTFException may be thrown.
indexOfAny Returns the index of the first occurence of any of the elements in needles in haystack. If no element of needles is found, then -1 is returned.
indexOfNeither Returns the index of the first occurence of any character not an elements in needles in haystack. If all element of haystack are element of needles -1 is returned.
indexOfNeither Returns the index of the first occurence of any character not an elements in needles in haystack. If all element of haystack are element of needles -1 is returned.
inPattern See if character c is in the intersection of the patterns.
inPattern See if character c is in the pattern.
isNumeric [in] string s can be formatted in the following ways:
lastIndexOf
lastIndexOf
lastIndexOf
lastIndexOf
lastIndexOfAny Returns the index of the last occurence of any of the elements in needles in haystack. If no element of needles is found, then -1 is returned. The stopIdx slices s in the following way s[0 .. stopIdx]. stopIdx represents a codeunit index in s. If the sequence ending at startIdx does not represent a well formed codepoint, then a std.utf.UTFException may be thrown.
lastIndexOfAny Returns the index of the last occurence of any of the elements in needles in haystack. If no element of needles is found, then -1 is returned.
lastIndexOfNeither Returns the last index of the first occurence of any character that is not an elements in needles in haystack. If all element of haystack are element of needles -1 is returned.
lastIndexOfNeither Returns the last index of the first occurence of any character that is not an elements in needles in haystack. If all element of haystack are element of needles -1 is returned.
leftJustifier Left justify s in a field width characters wide. fillChar is the character that will be used to fill up the space in the field that s doesn't fill.
leftJustify Left justify s in a field width characters wide. fillChar is the character that will be used to fill up the space in the field that s doesn't fill.
lineSplitter Split an array or slicable range of characters into a range of lines using '\r', '\n', '\v', '\f', "\r\n", std.uni.lineSep, std.uni.paraSep and '\u0085' (NEL) as delimiters. If keepTerm is set to KeepTerminator.yes, then the delimiter is included in the slices returned.
makeTrans Do same thing as makeTransTable but allocate the translation table on the GC heap.
makeTransTable Construct 256 character translation table, where characters in from[] are replaced by corresponding characters in to[].
munch Finds the position pos of the first character in s that does not match pattern (in the terminology used by inPattern). Updates s = s[pos..$]. Returns the slice from the beginning of the original (before update) string up to, and excluding, pos.
outdent Removes one level of indentation from an array of single-line strings.
outdent Removes one level of indentation from a multi-line string.
removechars Return string that is s with all characters removed that match pattern.
representation Returns the representation of a string, which has the same type as the string except the character type is replaced by ubyte, ushort, or uint depending on the character width.
rightJustifier Right justify s in a field width characters wide. fillChar is the character that will be used to fill up the space in the field that s doesn't fill.
rightJustify Right justify s in a field width characters wide. fillChar is the character that will be used to fill up the space in the field that s doesn't fill.
soundex Like soundexer, but with different parameters and return value.
soundexer Soundex algorithm.
splitLines Split s into an array of lines according to the unicode standard using '\r', '\n', "\r\n", std.uni.lineSep, std.uni.paraSep, U+0085 (NEL), '\v' and '\f' as delimiters. If keepTerm is set to KeepTerminator.yes, then the delimiter is included in the strings returned.
squeeze Return string where sequences of a character in s[] from pattern[] are replaced with a single instance of that character. If pattern is null, it defaults to all characters.
strip Strips both leading and trailing whitespace (as defined by std.uni.isWhite).
stripLeft Strips leading whitespace (as defined by std.uni.isWhite).
stripRight Strips trailing whitespace (as defined by std.uni.isWhite).
succ Return string that is the 'successor' to s[]. If the rightmost character is a-zA-Z0-9, it is incremented within its case or digits. If it generates a carry, the process is repeated with the one to its immediate left.
toStringz
tr Replaces the characters in str which are in from with the the corresponding characters in to and returns the resulting string.
translate This is an overload of translate which takes an existing buffer to write the contents to.
translate This is an ASCII-only overload of translate which takes an existing buffer to write the contents to.
translate This is an overload of translate which takes an existing buffer to write the contents to.
translate Replaces the characters in str which are keys in transTable with their corresponding values in transTable. transTable is an AA where its keys are dchar and its values are either dchar or some type of string. Also, if toRemove is given, the characters in it are removed from str prior to translation. str itself is unaltered. A copy with the changes is returned.
translate This is an ASCII-only overload of translate. It will not work with Unicode. It exists as an optimization for the cases where Unicode processing is not necessary.
wrap Wrap text into a paragraph.

Classes

Name Description
StringException Exception thrown on errors in std.string functions.

Aliases

Name Type Description
CaseSensitive Flag!("caseSensitive") Flag indicating whether a search is case-sensitive.
KeepTerminator Flag!("keepTerminator") Split s into an array of lines according to the unicode standard using '\r', '\n', "\r\n", std.uni.lineSep, std.uni.paraSep, U+0085 (NEL), '\v' and '\f' as delimiters. If keepTerm is set to KeepTerminator.yes, then the delimiter is included in the strings returned.

Authors

Walter Bright, Andrei Alexandrescu, and Jonathan M Davis

License

Boost License 1.0.

Comments