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

win*_*ama 5 rust

我遇到从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改用.