Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
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
a local clone.
dmd.root.string
Contains various string related functions.
Authors:
Walter Bright, http://www.digitalmars.com
License:
Source root/string.d
Documentation https://dlang.org/phobos/dmd_root_string.html
- pure nothrow @nogc inout(char)[]
toDString
(inout(char)*s
); - Slices a \0-terminated C-string, excluding the terminator
- static bool
iequals
(const(char)[]s1
, const(char)[]s2
); - Compare two slices for equality, in a case-insensitive wayComparison is based on char 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 of
src
into a C-string ('\0' terminated) then call dgThe intent of this function is to provide an allocation-less way to call a C function using a D slice. The function internally allocates a buffer if needed, but frees it on exit.Note The argument to dg is scope. To keep the data around after dg 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 of T - pure nothrow @nogc @safe string
stripLeadingLineTerminator
(stringstr
); - 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 \n\r.
- @trusted int
dstrcmp
()(scope const char[]s1
, scope const char[]s2
); - A string comparison functions that returns the same result as strcmp
Note Strings 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's core.internal.string - char[N + 1]
toStaticArray
(size_t N)(scope const(char)[N]literal
); - Infers the length N of a string literal and coerces its type to a static array with length N + 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: - https://d.godbolt.org/z/M69Z1g - https://gist.github.com/PetarKirov/338e4ab9292b6b2b311a3070572a07fb (backup URL)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"); static assert(e == "123\0"); const empty = "".toStaticArray; static assert(empty.length == 1); static assert(empty[0] == '\0');
- pure nothrow @nogc @system bool
startsWith
(scope const(char)*p
, scope const(char)[]needle
); - Checks if C string
p
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"));
Copyright © 1999-2022 by the D Language Foundation | Page generated by
Ddoc on (no date time)