strmisc

This module contains various string utility routines that are uncommonly used in comparison to strutils.

Procs

proc expandTabs(s: string; tabSize: int = 8): string {...}{.noSideEffect, raises: [],
    tags: [].}

Expand tab characters in s replacing them by spaces.

The amount of inserted spaces for each tab character is the difference between the current column number and the next tab position. Tab positions occur every tabSize characters. The column number starts at 0 and is increased with every single character and inserted space, except for newline, which resets the column number back to 0.

Example:

doAssert expandTabs("\t", 4) == "    "
doAssert expandTabs("\tfoo\t", 4) == "    foo "
doAssert expandTabs("\tfoo\tbar", 4) == "    foo bar"
doAssert expandTabs("\tfoo\tbar\t", 4) == "    foo bar "
doAssert expandTabs("ab\tcd\n\txy\t", 3) == "ab cd\n   xy "
  Source Edit
proc partition(s: string; sep: string; right: bool = false): (string, string,
    string) {...}{.noSideEffect, raises: [], tags: [].}

Split the string at the first or last occurrence of sep into a 3-tuple

Returns a 3 string tuple of (beforeSep, sep, afterSep) or (s, "", "") if sep is not found and right is false or ("", "", s) if sep is not found and right is true

Example:

doAssert partition("foo:bar", ":") == ("foo", ":", "bar")
doAssert partition("foobarbar", "bar") == ("foo", "bar", "bar")
doAssert partition("foobarbar", "bank") == ("foobarbar", "", "")
doAssert partition("foobarbar", "foo") == ("", "foo", "barbar")
doAssert partition("foofoobar", "bar") == ("foofoo", "bar", "")
  Source Edit
proc rpartition(s: string; sep: string): (string, string, string) {...}{.
    noSideEffect, raises: [], tags: [].}

Split the string at the last occurrence of sep into a 3-tuple

Returns a 3 string tuple of (beforeSep, sep, afterSep) or ("", "", s) if sep is not found

Example:

doAssert rpartition("foo:bar", ":") == ("foo", ":", "bar")
doAssert rpartition("foobarbar", "bar") == ("foobar", "bar", "")
doAssert rpartition("foobarbar", "bank") == ("", "", "foobarbar")
doAssert rpartition("foobarbar", "foo") == ("", "foo", "barbar")
doAssert rpartition("foofoobar", "bar") == ("foofoo", "bar", "")
  Source Edit