如何在原始字符串中转义“#和#”

问题描述 投票:0回答:2

我想做这个

let mystr = r#"
Id("#1#")
Id("#2#")
Id("#3#")
"#;

这不会编译,因为我需要以某种方式逃避

"#
#"
的出现。但我不知道如何...

rust escaping multiline
2个回答
0
投票

您可以使用任意数量的哈希值作为字符串分隔符,只要该数量的哈希值不出现在字符串本身中即可。 像这样

let mystr = r##"
    Id("#1#")
    Id("#2#")
    Id("#3#")
"##;

0
投票

因此,您的方法的问题在于您的原始字符串包含用于终止原始字符串的序列。您需要做的是在原始字符串的开头和结尾添加另一个

#
。像这样:

let mystr = r##"
Id("#1#")
Id("#2#")
Id("#3#")
"##;

注意第二次开放和关闭

#

输出是:

Id("#1#")
Id("#2#")
Id("#3#")

您可以在playground上查看。

查看docs,尤其是这部分:

原始字符串文字不处理任何转义。它们以字符 U+0072 (r) 开头,后跟少于 256 个字符 U+0023 (#) 和一个 U+0022(双引号)字符。 原始字符串主体可以包含任何 Unicode 字符序列,并且仅以另一个 U+0022(双引号)字符终止,后跟与开头 U+0022(双引号)之前相同数量的 U+0023 (#) 字符-引用)字符。

© www.soinside.com 2019 - 2024. All rights reserved.