Zig
Zig
StringBuilder GetBefore
Demonstrates the StringBuilder.GetBefore method.The GetBefore method was added in Chilkat v9.5.0.77
Chilkat Zig Downloads
const std = @import("std");
const chilkat = @import("chilkat");
pub fn main(init: std.process.Init) !void {
const alloc = init.arena.allocator();
const sb = try chilkat.StringBuilder.init();
defer sb.deinit();
try sb.append("www.chilkatsoft.com");
// The GetBefore method returns the contents of the string up to but not including
// the marker string. If the remove flag is true, then both the returned string AND
// the marker are removed.
var remove_flag: bool = false;
var marker: [:0]const u8 = ".";
var substr: [:0]const u8 = try sb.getBefore(alloc, marker, remove_flag);
std.debug.print("substr = {s}\n", .{substr});
std.debug.print("sb contains: {s}\n", .{try sb.getAsString(alloc)});
// Output:
// substr = www
// sb contains: www.chilkatsoft.com
remove_flag = true;
substr = try sb.getBefore(alloc, marker, remove_flag);
std.debug.print("substr = {s}\n", .{substr});
std.debug.print("sb contains: {s}\n", .{try sb.getAsString(alloc)});
// Output:
// substr = www
// sb contains: chilkatsoft.com
// If the marker is not found, and the removeFlag is true,
// then the entire string is returned and the sb is cleared.
// For example:
sb.clear();
sb.append("111--222--333--444") catch {};
marker = "--";
remove_flag = true;
while (sb.getLength() > 0) {
substr = try sb.getBefore(alloc, marker, remove_flag);
std.debug.print("substr = {s}, sb contains: {s}\n", .{ substr, try sb.getAsString(alloc) });
}
// Output is:
// substr = 111, sb contains: 222--333--444
// substr = 222, sb contains: 333--444
// substr = 333, sb contains: 444
// substr = 444, sb contains:
}