我正在尝试从\n
(从文件读取的文件内容)中删除String
个换行符,并将其转换为Vec<u8>
。
示例输入字符串:
let ss = String::from("AAAAAAAA\nBBBBBBBBB\nCCCCCC\nDDDDD\n\n");
fn parse(s: String) -> Vec<u8> {
let s = s.chars().skip_while(|c| *c == '\n');
let sett = s.into_iter().map(|c| c as u8).collect();
sett
}
虽然我没有遇到任何错误,但是skip_while
似乎没有删除字符串中的换行符。我在这里做错了什么?有没有更好的方法可以从String
删除换行符?
答案 0 :(得分:1)
您基本上可以将字符串中的\n
替换为into_bytes()并将其转换为Vec<u8>
fn parse(s: String) -> Vec<u8> {
s.replace("\n", "").into_bytes()
}
如果要使用迭代器,可以使用filter:
fn parse(s: String) -> Vec<u8> {
s.chars().filter(|c| *c != '\n').map(|c| c as u8).collect()
}
您可以这样称呼它:
use std::str::from_utf8;
fn main() {
let my_string = String::from("AAAAAAAA\nBBBBBBBBB\nCCCCCC\nDDDDD\n\n");
let parsed_string = parse(my_string.clone());
println!("{:?}", from_utf8(&parsed_string));
}