我有这个子字符串我想从字符串中删除:
<ArrayOfSiteQuery xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.datacontract.org/2004/07/CStore.DomainModels.HHS">
意识到它充满了愚蠢,我认为逐字逐句会解决所有弊病:
String messedUpJunk = @"<ArrayOfSiteQuery xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.datacontract.org/2004/07/CStore.DomainModels.HHS">";
...但是,用Lost In Space中的机器人来解释,它不会计算(编译);我在第一个“http”上得到“;期待”。
我可以通过转义引号来获取它:
String messedUpJunk = "<ArrayOfSiteQuery xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.datacontract.org/2004/07/CStore.DomainModels.HHS\">";
......但如果它没有动词,那么逐字使用是什么用途?
答案 0 :(得分:6)
双引号是您逐字字符串中唯一需要转义的字符。转义它的方式不同,你需要加倍(""
)而不是使用反斜杠:
String messedUpJunk = @"<ArrayOfSiteQuery xmlns:i=""http://www.w3.org/2001/XMLSchema-instance""
xmlns=""http://schemas.datacontract.org/2004/07/CStore.DomainModels.HHS"">";
使用双引号在逐字字符串
中嵌入引号
答案 1 :(得分:3)
这是双引号,需要转义(使用双引号),对于其他不需要转义的字符,例如反斜杠\
。
请参阅:2.4.4.5 String literals - C#
逐字字符串文字由@字符后跟a组成 双引号字符,零个或多个字符,以及结束 双引号字符。一个简单的例子就是@“你好”。在逐字 字符串文字,解释分隔符之间的字符 逐字,唯一的例外是引用转义序列。 特别是,简单的转义序列和十六进制和Unicode转义 序列不以逐字字符串文字处理。一字不差 字符串文字可能跨越多行。
您需要转义双引号的原因是因为它表示字符串的开头和结尾,无论是逐字还是常规。