dmd.root.string

Contains various string related functions.

Authors

Walter Bright, https://www.digitalmars.com

Source: root/string.d

  • Declaration

    pure nothrow @nogc inout(char)[] toDString(inout(char)* s);

    Slices a \0-terminated C-string, excluding the terminator

  • Declaration

    static pure nothrow @nogc bool iequals(const(char)[] s1, const(char)[] s2);

    Compare two slices for equality, in a case-insensitive way

    Discussion

    Comparison 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

    Return Value

    true if s1 == s2 regardless of case

  • Declaration

    nothrow auto toCStringThen(alias dg)(const(char)[] src);

    Copy the content of src into a C-string ('\0' terminated) then call dg

    Discussion

    The 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

    Return Value

    The return value of T

  • Declaration

    pure nothrow @nogc @safe string stripLeadingLineTerminator(string str);

    Strips one leading line terminator of the given string.

    Discussion

    The following are what the Unicode standard considers as line terminators:

    NameD Escape SequenceUnicode Code Point
    Line feed\nU+000A
    Line tabulation\vU+000B
    Form feed\fU+000C
    Carriage return\rU+000D
    Next lineU+0085
    Line separatorU+2028
    Paragraph separatorU+2029
    This function will also strip \r\n.

  • Declaration

    @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

  • Declaration

    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:

    Examples

    1. 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');

  • Declaration

    pure nothrow @nogc @system bool startsWith(scope const(char)* p, scope const(char)[] needle);

    Checks if C string p starts with needle.

    Parameters

    const(char)* p

    the C string to check

    const(char)[] needle

    the string to look for

    Return Value

    true if p starts with needle

    Examples

    1. 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"));