Rust 如何在0.9中反转字符串?
如何在Rust 0.9中反转字符串 根据0.8中的计算结果:Rust 如何在0.9中反转字符串?,rust,rust-0.9,Rust,Rust 0.9,如何在Rust 0.9中反转字符串 根据0.8中的计算结果: let reversed:~str = "一二三四五六七八九十".rev_iter().collect(); 。。。但是我无法让迭代器在0.9中处理字符串 还尝试了std::str::StrSlice::bytes\u rev,但我还没有找到一种干净的方法将结果转换回字符串,而不受编译器阻塞。首先对字节进行迭代,反转将中断多字节字符(您希望对字符进行迭代) 请注意,如果您有任何分解的字符,例如“e\u0301”(é),这将不会像预
let reversed:~str = "一二三四五六七八九十".rev_iter().collect();
。。。但是我无法让迭代器在0.9中处理字符串
还尝试了
std::str::StrSlice::bytes\u rev
,但我还没有找到一种干净的方法将结果转换回字符串,而不受编译器阻塞。首先对字节进行迭代,反转将中断多字节字符(您希望对字符进行迭代)
请注意,如果您有任何分解的字符,例如“e\u0301”(é),这将不会像预期的那样工作,因为它将交换这两个字符,组合的尖锐重音将影响错误的字符。正如@KevinBallard所说,这将迭代单个
字符
s(即Unicode码点)所以反转只是重新排列代码点。真正的字素重排序(为了更正确的Unicode反转)需要字素处理,而Rust stdlib目前完全缺乏这种处理(
let s = ~"abc";
let s2: ~str = s.chars_rev().collect();
println!("{:?}", s2);