在Rust中对字符串进行分区

 小王子loving 发布于 2023-02-06 15:39

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

我想取一个String "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))

telotortium.. 6

在Rust master的当前版本中(在Rust 0.9中应该保持为真),chunks在向量和向量切片上有一个迭代向量的方法,返回等长向量切片直到耗尽.但是,对于字符串或迭代器,通常没有任何方法可以实现此目的.

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

as_bytes:返回基础UTF-8字节向量(&'a [u8])的不可变向量切片.您可以chunks直接调用此方法,但由于您正在迭代字节,因此只有在您知道字符串完全是ASCII时才会起作用.

chars:返回字符串中Unicode代码点的迭代器,生成UTF-32 char值的流.

您可以使用to_owned_vec可以运行的方法将迭代器生成的值复制到拥有的堆分配向量中chunks.

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

1 个回答
  • 在Rust master的当前版本中(在Rust 0.9中应该保持为真),chunks在向量和向量切片上有一个迭代向量的方法,返回等长向量切片直到耗尽.但是,对于字符串或迭代器,通常没有任何方法可以实现此目的.

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

    as_bytes:返回基础UTF-8字节向量(&'a [u8])的不可变向量切片.您可以chunks直接调用此方法,但由于您正在迭代字节,因此只有在您知道字符串完全是ASCII时才会起作用.

    chars:返回字符串中Unicode代码点的迭代器,生成UTF-32 char值的流.

    您可以使用to_owned_vec可以运行的方法将迭代器生成的值复制到拥有的堆分配向量中chunks.

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

    2023-02-06 15:41 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有