string.Format是否为value添加额外的引号

时间:2015-06-24 06:47:31

标签: c# string-concatenation string.format

我发现每当我使用此方法string.Format()时,它会为我的变量值添加额外的引号和反斜杠。

string value = string.Format("sample {0}", someText);

在VS Watch上,我看到了这个结果:

"sample \"blah\""

在Text Visualizer中,我明白了:

sample "blah"

有谁能告诉我为什么我不能得到这个?

"sample blah"

请注意:我的解决方法已经是string.Replace("\"",""),但我只是想知道添加额外报价的位置。

5 个答案:

答案 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”