Sample code for 30+ languages & platforms
Zig

StringBuilder GetBefore

Demonstrates the StringBuilder.GetBefore method.

The GetBefore method was added in Chilkat v9.5.0.77

Chilkat Zig Downloads

Zig
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:
}