如何按特定字符拆分 zig 中的字符串?

问题描述 投票:0回答:2

我有一个字符串中的简单句子。我想在新行上打印每个单词,或者只是对每个单词进行一些计算?

zig中有类似python的

"Hello World".split()
的东西吗?像这样的东西:

var arr = std.strings.split("Hello world");
split zig
2个回答
14
投票

这是我发现的最简单的方法

const std = @import("std");

pub fn main() !void {
    var it = std.mem.split(u8, "Hello World", " ");
    while (it.next()) |x| {
        std.debug.print("{s}\n", .{x});
    }
}

看起来拆分是在标准

mem
模块中实现的。
.split
返回
SplitIterator
,这是一个带有
.next()
方法的结构体。当
.next()
返回 null 时,while 停止。这是 Zig 中的常见模式:

https://ziglearn.org/chapter-2/#iterators


0
投票

截至 2024 年 11 月

std.mem.split
已弃用

您可以使用

splitScalar

const std = @import("std");

pub fn main() !void {
    var it = std.mem.splitScalar(u8, "Hello World", " ");
    while (it.next()) |x| {
        std.debug.print("{s}\n", .{x});
    }
}

还有 splitSequence 我不确定我是否完全理解它和

splitScalar
之间的区别。

© www.soinside.com 2019 - 2024. All rights reserved.