diff --git a/vlib/builtin/string.v b/vlib/builtin/string.v index 632ad32c18..efaa62ffb4 100644 --- a/vlib/builtin/string.v +++ b/vlib/builtin/string.v @@ -238,8 +238,6 @@ pub fn (s string) split(delim string) []string { } if delim.len == 1 { return s.split_single(delim[0]) - // println('split 1 only') - // os.exit() } mut i := 0 mut start := 0// - 1 @@ -283,15 +281,15 @@ pub fn (s string) split_single(delim byte) []string { mut i := 0 mut start := 0 for i < s.len { - a := s[i] == delim - b := i == s.len - 1 - if a || b { - if i == s.len - 1 { + is_delim := s[i] == delim + last := i == s.len - 1 + if is_delim || last { + if !is_delim && i == s.len - 1 { i++ } val := s.substr(start, i) if val.len > 0 { - res << val.trim_space() + res << val } start = i + 1 } diff --git a/vlib/builtin/string_test.v b/vlib/builtin/string_test.v index 6a91d693e9..0e0cef9740 100644 --- a/vlib/builtin/string_test.v +++ b/vlib/builtin/string_test.v @@ -106,6 +106,13 @@ fn test_split() { assert vals[0]== '4627a862c3dec29fb3182a06b8965e0025759e18' assert vals[1]=='1530207969' assert vals[2]== 'blue' + // ///////// + s = 'lalala' + vals = s.split('a') + assert vals.len == 3 + assert vals[0] == 'l' + assert vals[1] == 'l' + assert vals[2] == 'l' } fn test_trim_space() {