Contains various string related functions.
pure nothrow @nogc inout(char)[]
toDString(inout(char)*
s);
Slices a\0-terminated C-string, excluding the terminator
auto
fTuple(const(char)[]
str);
Returns:a (length, ptr) tuple for passing a D string toprintf-style functions with the format string%.*s
Examples:import core.stdc.stdio: snprintf;char[6] buf = '.';const(char)[]str ="cutoff"[0..4];snprintf(buf.ptr, buf.length,"%.*s",str.fTuple.expand);assert(buf[] =="cuto\0.");
static pure nothrow @nogc bool
iequals(const(char)[]
s1, const(char)[]
s2);
Compare two slices for equality, in a case-insensitive way
Comparison is based onchar and does not do decoding.As a result, it's only really accurate for plain ASCII strings.
Parameters:const(char)[]s1 | string to compare |
const(char)[]s2 | string to compare |
Returns:true ifs1 ==s2 regardless of case
nothrow auto
toCStringThen(alias dg)(const(char)[]
src);
Copy the content ofsrc into a C-string ('\0' terminated) then calldg
The intent of this function is to provide an allocation-lessway to call a C function using a D slice.The function internally allocates a buffer if needed, but frees it on exit.
NoteThe argument todg isscope. To keep the data around afterdg exits,one has to copy it.
Parameters:const(char)[]src | Slice to use to call the C function |
| dg | Delegate to call afterwards |
Returns:The return value ofT
nothrow char[]
toCString(scope const(char)[]
s);
Convert a D string to a C string by allocating memory, copying it, and adding a terminating 0.
Parameters:const(char)[]s | string to copy |
Result0-terminated copy of s
pure nothrow @nogc @safe string
stripLeadingLineTerminator(string
str);
Strips one leading line terminator of the given string.
The following are what the Unicode standard considers as line terminators:
| Name | D Escape Sequence | Unicode Code Point |
|---|
|
|---|
| Line feed | \n | U+000A |
| Line tabulation | \v | U+000B |
| Form feed | \f | U+000C |
| Carriage return | \r | U+000D |
| Next line | | U+0085 |
| Line separator | | U+2028 |
| Paragraph separator | | U+2029 |
This function will also strip
\r\n.
@trusted int
dstrcmp()(scope const char[]
s1, scope const char[]
s2);
A string comparison functions that returns the same result as strcmp
NoteStrings are compared based on their ASCII values, no UTF-8 decoding.
Some C functions (e.g.
qsort) require a
int result for comparison.
See Also:Druntime'score.internal.string
char[N + 1]
toStaticArray(size_t N)(scope const(char)[N]
literal);
Infers the lengthN of a string literal and coerces its type to a static array with lengthN + 1. Returns the string with a null character appended to the end.
Parameters:const(char)[N]literal | string literal |
Notes
- LDC produces quite optimal code for short strings:
Examples:auto m ="123".toStaticArray;const c ="123".toStaticArray;immutable i ="123".toStaticArray;enum e ="123".toStaticArray;assert(m =="123\0");assert(c =="123\0");assert(i =="123\0");staticassert(e =="123\0");const empty ="".toStaticArray;staticassert(empty.length == 1);staticassert(empty[0] == '\0');
pure nothrow @nogc @system bool
startsWith(scope const(char)*
p, scope const(char)[]
needle);
pure nothrow @nogc @safe bool
startsWith(scope const(char)[]
str, scope const(char)[]
prefix);
Checks if C stringp starts withneedle.
Parameters:const(char)*p | the C string to check |
const(char)[]needle | the string to look for |
Returns:true ifp starts withneedle
Examples:const buf ="123".toStaticArray;const ptr = &buf[0];assert(ptr.startsWith(""));assert(ptr.startsWith("1"));assert(ptr.startsWith("12"));assert(ptr.startsWith("123"));assert(!ptr.startsWith("1234")); auto
splitLines(const char[]
text);
Taketext and turn it into an InputRange that emits slices intotext for each line.
Parameters:char[]text | array of characters |
Returns:InputRange accessingtext as a sequence of lines
Referencestd.string.splitLines()
@safe FindSplit
findSplit(return scope const(char)[]
str, scope const(char)[]
needle);
Find a substring in a string and split the string into before and after parts.
Parameters:const(char)[]str | string to look into |
const(char)[]needle | substring to find in str (must not be empty) |
Returns:aFindSplit object that casts totrue iffneedle was found insidestr. In that case,split[1] is the needle, andsplit[0]/split[2] are before/after the needle.
@safe const(char)[]
findBetween(const(char)[]
str, const(char)[]
l, const(char)[]
r);
Find a string inbetween two substrings
Parameters:const(char)[]str | string to look into |
const(char)[]l | substring to find on the left |
const(char)[]r | substring to find on the right |
Returns:substring ofstr inbetweenl andr