diff --git a/zig-string-tests.zig b/zig-string-tests.zig index b00de12..5f73a7d 100644 --- a/zig-string-tests.zig +++ b/zig-string-tests.zig @@ -119,8 +119,17 @@ test "String Tests" { assert(eql(u8, myStr.split("💯", 1).?, "Hello")); assert(eql(u8, myStr.split("💯", 2).?, "")); assert(eql(u8, myStr.split("💯", 3).?, "Hello")); + assert(eql(u8, myStr.split("💯", 5).?, "Hello")); + assert(eql(u8, myStr.split("💯", 6).?, "")); - // toLowercasr & toUppercase + var splitStr = String.init(&arena.allocator); + defer splitStr.deinit(); + + try splitStr.concat("variable='value'"); + assert(eql(u8, splitStr.split("=", 0).?, "variable")); + assert(eql(u8, splitStr.split("=", 1).?, "'value'")); + + // toLowercase & toUppercase myStr.toUppercase(); assert(myStr.cmp("💯HELLO💯💯HELLO💯💯HELLO💯")); myStr.toLowercase(); diff --git a/zig-string.zig b/zig-string.zig index c439f5a..ca24845 100644 --- a/zig-string.zig +++ b/zig-string.zig @@ -288,7 +288,7 @@ pub const String = struct { return self.size == 0; } - /// Splits the String into a slice based on a delimiter and an index + /// Splits the String into a slice, based on a delimiter and an index pub fn split(self: String, delimiter: []const u8, index: usize) ?[]const u8 { if (self.buffer) |buffer| { var i: usize = 0; @@ -307,6 +307,10 @@ pub const String = struct { i += size; } + + if (i >= self.size - 1 and block == index) { + return buffer[start..self.size]; + } } return null;