我正在用 Rust 编写一个小型 CLI 应用程序。它处理用户输入,如果发现特殊转义字符,则需要对其进行解释。
例如,如果用户输入一个字符串'New\nLine',它应该被解释为:
换
行
这是我到目前为止的代码
fn main() {
let text: Vec<String> = vec![String::from(r"New\n"),
String::from(r"Line")];
slash_parser(text);
}
fn slash_parser(text: Vec<String>) {
let mut text = text.join(" ");
println!("{}", text); // ---> New\n Line
if text.contains("\\") {
text = str::replace(&text, r"\n", r"\\n");
println!("{}", text); // ---> New\\n Line
println!("New\nLine") // ---> New
// ---> Line
}
}
Run Code Online (Sandbox Code Playgroud)
我认为\在字符串中添加一个额外的内容会使其被解释为新行,但我显然错了。
由于某种原因,如果字符串作为参数传递,它将被解释为不带特殊字符的字符串。
但是,如果字符串被打印为字符串文字,则该\n符号将被解释为换行符。
我在这里理解错了什么,以及如何将\n字符串中的它解释为新行?