add strutils.removePrefix proc (#6473)
This commit is contained in:
parent
616db85c61
commit
e135135469
2 changed files with 100 additions and 2 deletions
|
|
@ -2345,8 +2345,7 @@ proc removeSuffix*(s: var string, chars: set[char] = Newlines) {.
|
|||
|
||||
proc removeSuffix*(s: var string, c: char) {.
|
||||
rtl, extern: "nsuRemoveSuffixChar".} =
|
||||
## Removes a single character (in-place) from a string.
|
||||
##
|
||||
## Removes a single character (in-place) from the end of a string.
|
||||
## .. code-block:: nim
|
||||
## var
|
||||
## table = "users"
|
||||
|
|
@ -2368,6 +2367,43 @@ proc removeSuffix*(s: var string, suffix: string) {.
|
|||
newLen -= len(suffix)
|
||||
s.setLen(newLen)
|
||||
|
||||
proc removePrefix*(s: var string, chars: set[char] = Newlines) {.
|
||||
rtl, extern: "nsuRemovePrefixCharSet".} =
|
||||
## Removes all characters from `chars` from the start of the string `s`
|
||||
## (in-place).
|
||||
## .. code-block:: nim
|
||||
## var userInput = "\r\n*~Hello World!"
|
||||
## userInput.removePrefix
|
||||
## doAssert userInput == "*~Hello World!"
|
||||
## userInput.removePrefix({'~', '*'})
|
||||
## doAssert userInput == "Hello World!"
|
||||
##
|
||||
## var otherInput = "?!?Hello!?!"
|
||||
## otherInput.removePrefix({'!', '?'})
|
||||
## doAssert otherInput == "Hello!?!"
|
||||
var start = 0
|
||||
while start < s.len and s[start] in chars: start += 1
|
||||
if start > 0: s.delete(0, start - 1)
|
||||
|
||||
proc removePrefix*(s: var string, c: char) {.
|
||||
rtl, extern: "nsuRemovePrefixChar".} =
|
||||
## Removes a single character (in-place) from the start of a string.
|
||||
## .. code-block:: nim
|
||||
## var ident = "pControl"
|
||||
## ident.removePrefix('p')
|
||||
## doAssert ident == "Control"
|
||||
removePrefix(s, chars = {c})
|
||||
|
||||
proc removePrefix*(s: var string, prefix: string) {.
|
||||
rtl, extern: "nsuRemovePrefixString".} =
|
||||
## Remove the first matching prefix (in-place) from a string.
|
||||
## .. code-block:: nim
|
||||
## var answers = "yesyes"
|
||||
## answers.removePrefix("yes")
|
||||
## doAssert answers == "yes"
|
||||
if s.startsWith(prefix):
|
||||
s.delete(0, prefix.len - 1)
|
||||
|
||||
when isMainModule:
|
||||
doAssert align("abc", 4) == " abc"
|
||||
doAssert align("a", 0) == "a"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue