Skip to content

Commit

Permalink
builtin: fix split_nth() and rsplit_nth() on an empty delimeter (#19005)
Browse files Browse the repository at this point in the history
  • Loading branch information
katekyy committed Jul 29, 2023
1 parent e78e468 commit b622dca
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
4 changes: 2 additions & 2 deletions vlib/builtin/string.v
Expand Up @@ -865,7 +865,7 @@ pub fn (s string) split_nth(delim string, nth int) []string {
i = 1
for ch in s {
if nth > 0 && i >= nth {
res << s[i..]
res << s[i - 1..]
break
}
res << ch.ascii_str()
Expand Down Expand Up @@ -938,7 +938,7 @@ pub fn (s string) rsplit_nth(delim string, nth int) []string {
0 {
for i >= 0 {
if nth > 0 && res.len == nth - 1 {
res << s[..i]
res << s[..i + 1]
break
}
res << s[i].ascii_str()
Expand Down
9 changes: 9 additions & 0 deletions vlib/builtin/string_test.v
Expand Up @@ -183,6 +183,15 @@ fn test_split_nth() {
assert e.split_nth(',,', 3).len == 3
assert e.split_nth(',', -1).len == 12
assert e.split_nth(',', 3).len == 3
f := '1:2:3'
assert f.split_nth(':', 2) == ['1', '2:3']
assert f.rsplit_nth(':', 2) == ['3', '1:2']
g := '123'
assert g.split_nth('', 2) == ['1', '23']
assert g.rsplit_nth('', 2) == ['3', '12']
h := ''
assert h.split_nth('', 2) == []
assert h.rsplit_nth('', 2) == []
}

fn test_rsplit_nth() {
Expand Down

0 comments on commit b622dca

Please sign in to comment.