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

Does string.Format add extra quotes to value

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

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

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

"sample \"blah\""

在 Text Visualizer 中,我得到了这个:

sample "blah"

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

"sample blah"

请注意:我已经有了一个解决方法,即 string.Replace("\"","") 但我只想知道在何处添加了额外的引号。

我 100% 确定,在您的上下文中,某些文本包含额外的引号。

string.Format("sample {0}", "blah")

returns "sample blah"

这仅与 VS 调试有关。它实际上并没有向该字符串添加任何内容。 VS 只是转义字符串,无需担心或处理。

编辑:要获得 sample blah(没有任何引号)而不是 sample "blah",您需要替换引号:

Console.WriteLine(value.Replace("\"", "");

现在在 VS 调试器中,您会看到以下内容:"sample blah" 而在文本文件中,例如你会看到 sample blah

它显​​示您的 sometext 包含 "blah" 而不是废话。 这就是 \" 在调试期间出现的原因。

这个 string.Format 根本不会向任何字符串添加 任何东西

区别在于如何在 Visual Studio 和文本可视化工具中查看字符串。由于 " 是一个 escape sequence 字符,因此您需要在代码部分将其用作 \"

据我所知,这些转义序列字符是 C 语言标准遗留的。

Can anyone tell me why I can't get this?

"sample blah"

因为在您的示例中您没有任何操作来获取此字符串。您的字符串在开头或结尾没有转义的 " 字符。您可以在 string.format 中使用转义它们;

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

结果将是;

"sample blah"

您的格式字符串中没有任何引号。 如果您希望字符串包含引号,您需要在格式字符串中添加引号。

字符串 foo = "foo" foo 的值为 foo

string foo = "\"foo\"" foo 的值为 "foo"