r#’string’
问题
最初在vscode中遇到提示”rewrite as a raw string”【重写为原生字符串】,然后在字符串前增加了r#,字符串后增加了#,起初不明所以,查找后发现其作用。
类似于python中字符串前的的 r ,可以无需转义字符串中的特殊字符。
解决
r 后面的#需要在字符串的前后配对,符合 r+ n个#+“字符串”+ n个#。
fn main() {let var = "It's cool!\nI love it!";println!(r"{}", var);}//It's cool!//I love it!fn main() {let var = "It's cool!\nI love it!";println!(r##"{}"##, var);}//It's cool!//I love it!fn main() {let var = "It's cool!\nI love it!";println!(r###"{}"###, var);}//It's cool!//I love it!
r后面可以跟0-n个#号,相当于在每个特殊符号前的转移字符\。无论是变量还是输出字符串,r只要跟在字符串之前即可。
fn main() {let var = r"我不是换行\n,我没有换行";println!("{}", var);}//我不是换行\n,我没有换行
The Rust Reference的相关内容
Characters and strings
| Example | #sets |
Characters | |
|---|---|---|---|
| Character | 'H' |
0 | All Unicode |
| String | "hello" |
0 | All Unicode |
| Raw string | r#"hello"# |
0 or more* | All Unicode |
| Byte | b'H' |
0 | All ASCII |
| Byte string | b"hello" |
0 | All ASCII |
| Raw byte string | br#"hello"# |
0 or more* | All ASCII |
注意:# 号数量前后必须相等。
