gpt4 book ai didi

rust - 在 Rust 中对字符串进行分区

转载 作者:行者123 更新时间:2023-11-29 07:53:21 25 4
gpt4 key购买 nike

Rust 中是否有一种机制可以将字符串划分为等长元素列表(子字符串或元组/字符数组)?

我想把一个字符串 "abcdefghijkl" 分成一个列表,比如 ["ab", "cd", "ef", "gh""ij""kl"]

我不需要查看手动执行此操作的方法,我只想知道是否有与 Clojure 的 partition 类似的方法:

user> (partition 2 "abcdefghijkl")
((\a \b) (\c \d) (\e \f) (\g \h) (\i \j) (\k \l))

最佳答案

在当前版本的 Rust master 中(在 Rust 0.9 中应该保持正确),有一个方法 chunks在向量和向量切片上迭代向量,返回等长向量切片直到耗尽。但是,通常没有任何关于字符串或迭代器的方法可以让您完成此操作。

要解决这个问题,请注意虽然 Rust 字符串本身不是 Rust 向量,但它们由包含字符串的 UTF-8 表示的 u8 向量支持。此外,str 类型提供了获取字符串不同 View 的方法,特别是:

  • as_bytes :返回底层 UTF-8 字节向量的不可变向量切片 (&'a [u8])。您可以直接对此调用 chunks,但由于您是在字节上迭代,因此只有当您知道您的字符串完全是 ASCII 时,这才有效。
  • chars : 返回字符串中 Unicode 代码点的 迭代器,生成 UTF-32 char 值流。

您可以使用 to_owned_vec 将迭代器生成的值复制到一个拥有的、堆分配的向量中方法,您可以在其上运行 chunks

编辑:这最初声称 chunks 存在于 Rust 0.8 中。实际上,方法名称是 chunk_iter。有关详细信息,请参阅评论。

关于rust - 在 Rust 中对字符串进行分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20925740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com