我有一个字符串中的简单句子。我想在新行上打印每个单词,或者只是对每个单词进行一些计算?
zig中有类似python的
"Hello World".split()
的东西吗?像这样的东西:
var arr = std.strings.split("Hello world");
这是我发现的最简单的方法
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 中的常见模式:
截至 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
之间的区别。