我怎样写在锈多行字符串?(How do I write a multi-line string in

2019-08-17 08:43发布

是否有可能写的是这样的:

fn main() {
    let my_string: &str = "Testing for new lines \
                           might work like this?";
}

Answer 1:

如果我读语言参考正确的,那么它看起来像应该工作。 语言裁判指出\n等的支持(如常见的转义,用于插入线闯入你的字符串),连同“附加越狱”,包括LF,CR,和HT。



Answer 2:

另一种方式来做到这一点是使用原始字符串字面量 :

原始字符串字面量不处理任何逃逸。 他们开始与字符U+0072r其次是零个或多个字符的U+0023# )和U+0022 (双引号)字符。 原始字符串体可以包含的Unicode字符的任何序列,并且仅由另一端的U+0022 (双引号)字符,随后由相同数量的U+0023 (#)字符前面的开口U+0022 (双引号)字符。

包含在原始字符串身体所有Unicode字符代表自己,字符U+0022 (双引号)(随后当由至少除了尽可能多的U+0023# )字符作为被用来启动原始字符串文字)或U+005C\ ),没有任何特殊含义。

对于字符串常量的例子:

 "foo"; r"foo"; // foo "\"foo\""; r#""foo""#; // "foo" "foo #\"# bar"; r##"foo #"# bar"##; // foo #"# bar "\x52"; "R"; r"R"; // R "\\x52"; r"\x52"; // \x52 


Answer 3:

有拉斯特编写多行字符串的两种方法有不同的结果 。 你应该根据你所要完成什么照顾他们之间进行选择。

方法1:悬空空白

如果开头的字符串"包含文字线断裂,锈蚀编译器将‘吞噬’行的最后一个非空白字符和下一行的第一个非空白字符之间的所有空格,并用一个单一的替换它们

例:

fn test() {
    println!("{}", "hello  
    world");
}

不管有多少文字 (空格)字符(零或百)后出现hello ,上述输出将永远是hello world

方法2:反斜杠换行符

这是完全相反的。 在这种模式下,前一个文字所有的空白\在第一行被保留,并且所有的下一行随后的空白也被保留。

例:

fn test() {
    println!("{}", "hello  \
    world");
}

在这个例子中,输出hello world

此外,在另一个答复中提到,锈有“原始文字”字符串,但他们没有进入这个讨论,拉斯特(不像需要求助于原始字符串为此一些其他语言)支持,而不引用内容的文字换行限制,因为我们可以在上面看到。



文章来源: How do I write a multi-line string in Rust?
标签: rust