1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

builtin: fix split_nth() and rsplit_nth() on an empty delimeter (#19005)

This commit is contained in:
katekyy 2023-07-29 23:12:51 +02:00 committed by GitHub
parent e78e468d5f
commit b622dca915
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 2 deletions

View File

@ -865,7 +865,7 @@ pub fn (s string) split_nth(delim string, nth int) []string {
i = 1 i = 1
for ch in s { for ch in s {
if nth > 0 && i >= nth { if nth > 0 && i >= nth {
res << s[i..] res << s[i - 1..]
break break
} }
res << ch.ascii_str() res << ch.ascii_str()
@ -938,7 +938,7 @@ pub fn (s string) rsplit_nth(delim string, nth int) []string {
0 { 0 {
for i >= 0 { for i >= 0 {
if nth > 0 && res.len == nth - 1 { if nth > 0 && res.len == nth - 1 {
res << s[..i] res << s[..i + 1]
break break
} }
res << s[i].ascii_str() res << s[i].ascii_str()

View File

@ -183,6 +183,15 @@ fn test_split_nth() {
assert e.split_nth(',,', 3).len == 3 assert e.split_nth(',,', 3).len == 3
assert e.split_nth(',', -1).len == 12 assert e.split_nth(',', -1).len == 12
assert e.split_nth(',', 3).len == 3 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() { fn test_rsplit_nth() {