This module supports helper routines for working with cstring without having to convert cstring to string, in order to save allocations.
See also
- strutils module for working with string
Procs
func cmpIgnoreCase(a, b: cstring): int {....gcsafe, extern: "csuCmpIgnoreCase", raises: [], tags: [], forbids: [].}
-
Compares two strings in a case insensitive manner. Returns:
- 0 if a == b
- < 0 if a < b
- > 0 if a > b
Example:
assert cmpIgnoreCase(cstring"hello", cstring"HeLLo") == 0 assert cmpIgnoreCase(cstring"echo", cstring"hello") < 0 assert cmpIgnoreCase(cstring"yellow", cstring"hello") > 0
Source Edit func cmpIgnoreStyle(a, b: cstring): int {....gcsafe, extern: "csuCmpIgnoreStyle", raises: [], tags: [], forbids: [].}
-
Semantically the same as cmp(normalize($a), normalize($b)). It is just optimized to not allocate temporary strings. This should NOT be used to compare Nim identifier names, use macros.eqIdent for that. Returns:
- 0 if a == b
- < 0 if a < b
- > 0 if a > b
Example:
assert cmpIgnoreStyle(cstring"hello", cstring"H_e_L_Lo") == 0
Source Edit func endsWith(s, suffix: cstring): bool {....gcsafe, extern: "csuEndsWith", raises: [], tags: [], forbids: [].}
-
Returns true if s ends with suffix.
The JS backend uses the native String.prototype.endsWith function.
Example:
assert endsWith(cstring"Hello, Nimion", cstring"Nimion") assert not endsWith(cstring"Hello, Nimion", cstring"Hello") assert endsWith(cstring"Hello", cstring"")
Source Edit func startsWith(s, prefix: cstring): bool {....gcsafe, extern: "csuStartsWith", raises: [], tags: [], forbids: [].}
-
Returns true if s starts with prefix.
The JS backend uses the native String.prototype.startsWith function.
Example:
assert startsWith(cstring"Hello, Nimion", cstring"Hello") assert not startsWith(cstring"Hello, Nimion", cstring"Nimion") assert startsWith(cstring"Hello", cstring"")
Source Edit