我遇到从UTF-8编码字符串中删除尾随空字符的问题:
如何从一个删除这些字符String
?
这是我用来创建String
一个代码的代码Vec
:
let mut data: Vec<u8> = vec![0; 512];
// populate data
let res = String::from_utf8(data).expect("Found invalid UTF-8");
Run Code Online (Sandbox Code Playgroud)
kaz*_*ase 10
您可以使用修剪字符串中的自定义模式trim_matches
.模式可以是空字符:
fn main() {
let mut data: Vec<u8> = vec![0; 8];
data[0] = 104;
data[1] = 105;
let res = String::from_utf8(data).expect("Found invalid UTF-8");
println!("{}: {:?}", res.len(), res);
// 8: "hi\u{0}\u{0}\u{0}\u{0}\u{0}\u{0}"
let res = res.trim_matches(char::from(0));
println!("{}: {:?}", res.len(), res);
// 2: "hi"
}
Run Code Online (Sandbox Code Playgroud)
这从两侧移除0.如果您只想删除尾随0,请trim_right_matches
改用.