我发现每当我使用此方法string.Format()时,它会为我的变量值添加额外的引号和反斜杠。
string value = string.Format("sample {0}", someText);
在VS Watch上,我看到了这个结果:
"sample \"blah\""
在Text Visualizer中,我明白了:
sample "blah"
有谁能告诉我为什么我不能得到这个?
"sample blah"
请注意:我的解决方法已经是string.Replace("\"","")
,但我只是想知道添加额外报价的位置。
答案 0 :(得分:5)
我100%肯定,在你的上下文中,sometext包含额外的引号。
string.Format("sample {0}", "blah")
返回“样本blah”
答案 1 :(得分:2)
这仅与VS调试有关。它并非实际上向该字符串添加任何内容。 VS只是逃避字符串,无需担心或处理。
编辑:要获取sample blah
(不带任何引号)而不是sample "blah"
,您需要替换引号:
Console.WriteLine(value.Replace("\"", "");
现在在VS Debugger中,您会在文本文件中看到以下内容:"sample blah"
,例如你会看到sample blah
答案 2 :(得分:0)
它显示您的sometext
包含“blah”而不是blah。
这就是调试期间出现\"
的原因。
答案 3 :(得分:0)
此string.Format
根本不会将任何添加到任何字符串中。
不同之处在于您可以在Visual Studio和Text Visualizer中查看字符串。由于"
是escape sequence字符,因此您需要在代码部分中将其用作\"
。
据我所知,这些转义序列字符是C语言标准的遗留物。
有谁能告诉我为什么我不能得到这个?
“样品等”
因为您没有任何来获取示例中的此字符串。您的字符串在开始或结尾时没有转义"
个字符。你可以在string.format中使用它们来逃避它们;
string someText = "blah";
string value = string.Format("\"sample {0}\"", someText);
结果将是;
"sample blah"
答案 4 :(得分:0)
您的格式字符串中没有任何引号。 如果希望字符串包含引号,则需要在格式字符串中添加引号。
string foo =“foo” foo的值为foo
string foo =“\”foo \“” foo的值为“foo”