小编Lab*_*rat的帖子

解释从用户输入读取的字符串中的转义字符

我正在用 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字符串中的它解释为新行?

string newline escaping rust

3
推荐指数
1
解决办法
4393
查看次数

标签 统计

escaping ×1

newline ×1

rust ×1

string ×1