我遇到从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");
答案 0 :(得分:6)
您可以使用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"
}
这从两侧移除0。如果您只想删除尾随0,请改用trim_right_matches
。