3.2. Boost package for string manipulation library

The STRINGS_BOOST module extends string handling with splitting, joining, padding, character replacement, and edit distance computation.

All functions and symbols are in “strings_boost” module, use require to get access to it.

require daslib/strings_boost

Example:

require daslib/strings_boost

    [export]
    def main() {
        let parts = split("one,two,three", ",")
        print("split: {parts}\n")
        print("join: {join(parts, " | ")}\n")
        print("[{wide("hello", 10)}]\n")
        print("distance: {levenshtein_distance("kitten", "sitting")}\n")
    }
    // output:
    // split: [[ one; two; three]]
    // join: one | two | three
    // [hello     ]
    // distance: 3

3.2.1. Split and join

3.2.1.1. join

join(it: auto; separator: string): auto

Joins the elements of an iterable into a single string using the specified separator.

Arguments:
  • it : auto

  • separator : string implicit

join(iterable: array<auto(TT)>; separator: string; blk: block<(var writer:StringBuilderWriter;elem:TT):void>): string
join(it: iterator<auto(TT)>; separator: string): auto
join(iterable: iterator<auto(TT)>; separator: string; blk: block<(var writer:StringBuilderWriter;elem:TT):void>): string
join(iterable: auto(TT)[]; separator: string; blk: block<(var writer:StringBuilderWriter;elem:TT):void>): string

3.2.1.2. split

split(text: string; delim: string): array<string>

Splits a string by the specified delimiter string and returns an array of substrings.

Arguments:
  • text : string implicit

  • delim : string implicit

split(text: string; delim: string; blk: block<(arg:array<string>#):auto>): auto

3.2.1.3. split_by_chars

split_by_chars(text: string; delim: string): array<string>

Splits a string by the specified delimiter characters and returns an array of substrings.

Arguments:
  • text : string implicit

  • delim : string implicit

split_by_chars(text: string; delim: string; blk: block<(arg:array<string>#):auto>): auto

3.2.2. Formatting

capitalize(str: string): string

Returns a copy of the string with the first character converted to uppercase. The rest of the string is unchanged.

Arguments:
  • str : string

pad_left(str: string; width: int; ch: int = 32): string

Pads the string with the character ch on the left to reach the specified minimum width. If the string is already at least width characters, it is returned unchanged.

Arguments:
  • str : string

  • width : int

  • ch : int

pad_right(str: string; width: int; ch: int = 32): string

Pads the string with the character ch on the right to reach the specified minimum width. If the string is already at least width characters, it is returned unchanged.

Arguments:
  • str : string

  • width : int

  • ch : int

wide(text: string; width: int): string

Pads the string with trailing spaces to reach the specified minimum width.

Arguments:
  • text : string implicit

  • width : int

3.2.3. Queries and comparisons

contains(str: string; sub: string): bool

Returns true if sub is found anywhere within str.

Arguments:
  • str : string

  • sub : string

count(str: string; sub: string): int

Counts non-overlapping occurrences of sub in str. Returns 0 if sub is empty or not found.

Arguments:
  • str : string

  • sub : string

3.2.3.1. eq

eq(b: das_string; a: string): auto

Compares a string with a das_string for equality, returning true if they match.

Arguments:
eq(a: string; b: das_string): auto

is_character_at(foo: array<uint8>; idx: int; ch: int): auto

Returns true if the byte at the specified index in the array equals the given character code.

Arguments:
  • foo : array<uint8> implicit

  • idx : int

  • ch : int

is_null_or_whitespace(str: string): bool

Returns true if the string is null, empty, or contains only whitespace characters (space, tab, CR, LF).

Arguments:
  • str : string

3.2.5. Replace

replace_multiple(source: string; replaces: array<tuple<text:string;replacement:string>>): string

Applies multiple find-and-replace substitutions to a string in a single pass.

Arguments:
  • source : string

  • replaces : array<tuple<text:string;replacement:string>>

3.2.6. Prefix and suffix

trim_prefix(str: string; prefix: string): string

Removes prefix from the beginning of str if present. Returns the string unchanged if it does not start with prefix.

Arguments:
  • str : string

  • prefix : string

trim_suffix(str: string; suffix: string): string

Removes suffix from the end of str if present. Returns the string unchanged if it does not end with suffix.

Arguments:
  • str : string

  • suffix : string

3.2.7. Levenshtein distance

levenshtein_distance(s: string; t: string): int

Computes the Levenshtein edit distance between two strings.

Arguments:
  • s : string implicit

  • t : string implicit

levenshtein_distance_fast(s: string; t: string): int

Computes the Levenshtein edit distance between two strings using an optimized algorithm.

Arguments:
  • s : string implicit

  • t : string implicit