String 使用lines()和collect()返回字符串时,如何保留换行符?

String 使用lines()和collect()返回字符串时,如何保留换行符?,string,rust,String,Rust,我有一个名为a_file.txt的文件,我想这样读,然后从该文件的每一行中过滤出字符串“help me”: fn main() -> std::io::Result<()> { let _s: String = std::fs::read_to_string("a_file.txt")? .lines() .filter(|line| line.contains("help me")) .map(|s| s.to_stri

我有一个名为
a_file.txt
的文件,我想这样读,然后从该文件的每一行中过滤出字符串
“help me”

fn main() -> std::io::Result<()> {
    let _s: String = std::fs::read_to_string("a_file.txt")?
        .lines()
        .filter(|line| line.contains("help me"))
        .map(|s| s.to_string())
        .collect();
    Ok(())
}
fn main()->std::io::Result{
让_s:String=std::fs::read_to_String(“a_file.txt”)?
.行()
.filter(| line | line.contains(“帮助我”))
.map(| s | s.到_字符串())
.收集();
好(())
}
这里的
map
函数使其能够
collect()
返回
字符串
而不是
&str

此代码返回文本,但似乎已删除
\n
。我假设发生这种情况是因为
lines()
函数使用
\n
生成迭代器


如何保留
\n
s?我想从每一行中删除指定的字符串,因此我必须使用
lines()
函数。

很抱歉,筛选或过滤掉?看起来您的问题可能由或的答案回答。如果没有,请回答您的问题以解释差异。否则,我们可以将此问题标记为已回答。或者简单但不好的解决方案->像这样修改地图
.map(|s|s.to_string()+“\n”)
我会使用
.fold(string::new(),|s,l | s+l+“\n”)
而不是
.map
。collect
。对不起,过滤还是过滤掉?看起来您的问题可能由或的答案回答。如果没有,请回答您的问题以解释差异。否则,我们可以将此问题标记为已回答。或者简单但糟糕的解决方案->像这样修改地图
.map(|s|s.to_string()+“\n”)
我会使用
.fold(string::new(),|s,l | s+l+“\n”)
而不是
.map
.collect