alternative to #21914; split, rsplit now forbid an empty separator (#21961)

This commit is contained in:
ringabout
2023-05-30 19:40:09 +08:00
committed by GitHub
parent 7e055413f9
commit 40f88da90b
3 changed files with 37 additions and 4 deletions

View File

@@ -53,6 +53,13 @@ template main() =
doAssert s.split(maxsplit = 4) == @["", "this", "is", "an", "example "]
doAssert s.split(' ', maxsplit = 1) == @["", "this is an example "]
doAssert s.split(" ", maxsplit = 4) == @["", "this", "is", "an", "example "]
# Empty string:
doAssert "".split() == @[""]
doAssert "".split(" ") == @[""]
doAssert "".split({' '}) == @[""]
# Empty separators:
doAssertRaises(AssertionDefect): discard s.split({})
doAssertRaises(AssertionDefect): discard s.split("")
block: # splitLines
let fixture = "a\nb\rc\r\nd"
@@ -69,6 +76,13 @@ template main() =
doAssert rsplit(":foo:bar", sep = ':', maxsplit = 2) == @["", "foo", "bar"]
doAssert rsplit(":foo:bar", sep = ':', maxsplit = 3) == @["", "foo", "bar"]
doAssert rsplit("foothebar", sep = "the") == @["foo", "bar"]
# Empty string:
doAssert "".rsplit() == @[""]
doAssert "".rsplit(" ") == @[""]
doAssert "".rsplit({' '}) == @[""]
# Empty separators:
doAssertRaises(AssertionDefect): discard "".rsplit({})
doAssertRaises(AssertionDefect): discard "".rsplit("")
block: # splitWhitespace
let s = " this is an example "