如何从String中删除尾随空字符?

时间:2018-03-21 12:35:51

标签: rust

我遇到从UTF-8编码字符串中删除尾随空字符的问题:

enter image description here

如何从String删除这些字符?

以下是我用String创建Vec的代码:

let mut data: Vec<u8> = vec![0; 512];
// populate data
let res = String::from_utf8(data).expect("Found invalid UTF-8");

1 个答案:

答案 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