根据Rust 书,该String::len方法返回组成字符串的字节数,这可能与字符长度不对应.
例如,如果我们在日语中考虑以下字符串,则len()返回30,这是字节数而不是字符数,这将是10:
let s = String::from("??????????");
s.len() // returns 30.
Run Code Online (Sandbox Code Playgroud)
我找到获取字符数的唯一方法是使用以下函数:
s.chars().count()
Run Code Online (Sandbox Code Playgroud)
返回10,是正确的字符数.
String除了上面使用的那个之外,还有什么方法可以返回字符数吗?
She*_*ter 18
String除了上面使用的那个之外,还有什么方法可以返回字符数吗?
不,使用s.chars().count()是正确的.请注意,这是O(N)操作(因为UTF-8很复杂),而获取字节数是O(1)操作.
您可以自己查看所有方法str.
正如评论中指出的那样,a char是一个特定的概念:
重要的是要记住
char代表Unicode标量值,并且可能与您对"字符"的概念不符.对字形集群的迭代可能是你真正想要的.
一个这样的例子是预先组合的字符:
fn main() {
println!("{}", "e?".chars().count()); // 2
println!("{}", "é".chars().count()); // 1
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8701 次 |
| 最近记录: |