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
。