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 |
注意:#
号数量前后必须相等。