diff --git a/core/strings/strings.odin b/core/strings/strings.odin index 670da166b..fe25ad3bf 100644 --- a/core/strings/strings.odin +++ b/core/strings/strings.odin @@ -339,6 +339,25 @@ _split_iterator :: proc(s: ^string, sep: string, sep_save: int) -> (res: string, return } +@private +_split_by_byte_iterator :: proc(s: ^string, sep: u8) -> (res: string, ok: bool) { + m := index_byte(s^, sep) + if m < 0 { + // not found + res = s[:] + ok = res != "" + s^ = {} + } else { + res = s[:m] + ok = true + s^ = s[m+1:] + } + return +} + +split_by_byte_iterator :: proc(s: ^string, sep: u8) -> (string, bool) { + return _split_by_byte_iterator(s, sep) +} split_iterator :: proc(s: ^string, sep: string) -> (string, bool) { return _split_iterator(s, sep, 0)