Rust 如何从字符串中删除换行符?

Rust 如何从字符串中删除换行符?,rust,Rust,我正在尝试从字符串(从文件读取的文件内容)中删除换行符,并将其转换为Vec 输入字符串示例: let ss = String::from("AAAAAAAA\nBBBBBBBBB\nCCCCCC\nDDDDD\n\n"); fn解析(s:String)->Vec{ 设s=s.chars().skip|u while(|c |*c=='\n'); 让sett=s.进入| iter().map(| c | c作为u8.collect(); 塞特 } 虽然没有错误,skip_,

我正在尝试从
字符串
(从文件读取的文件内容)中删除换行符,并将其转换为
Vec

输入字符串示例:

let ss = String::from("AAAAAAAA\nBBBBBBBBB\nCCCCCC\nDDDDD\n\n");
fn解析(s:String)->Vec{
设s=s.chars().skip|u while(|c |*c=='\n');
让sett=s.进入| iter().map(| c | c作为u8.collect();
塞特
}

虽然没有错误,
skip_,但是
似乎没有从字符串中删除换行符。我做错了什么?

您基本上可以将字符串中的
\n
替换为,然后将其转换为
Vec

fn解析(s:String)->Vec{
s、 将(“\n”,”)替换为_字节()
}

如果要使用迭代器,可以使用过滤器:

fn解析(s:String)->Vec{
s、 chars().filter(| c |*c!='\n').map(| c | c as u8).collect()
}
您可以这样称呼它:

使用std::str::from_utf8;
fn main(){
让我的字符串=字符串::from(“AAAAAAAA\nbbbbbbb\nCCCCCC\ndddddd\n\n”);
让parsed_string=parse(my_string.clone());
println!(“{:?}”,来自_utf8(&parsed_string));
}

在本例中,直接使用
bytes()
将字符强制转换为u8不是一件好事。您的条件是错误的。但即使你纠正了它,也不是你要求的行为。它会一直跳过,直到第一次出现,而您得到的字符串只是在/n出现之前跳过的第一部分@RussellB:
take
skip
在函数式语言中用于列表操作是很常见的:
take
将返回前缀列表,
skip
将返回后缀。有一些基于它们的变体:接受/跳过许多元素,以及在谓词为真时或直到它变为真时接受/跳过
skip_而
继承了这一传统,因此只要谓词为true,就跳过元素,然后返回剩余的内容。在您的例子中,由于谓词在第一个元素上为false,因此它立即停止跳过并返回整个列表。