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 语言标准遗留的。
- https://en.wikipedia.org/wiki/String_literal#Escape_sequences
- https://en.wikipedia.org/wiki/Escape_sequences_in_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"
我发现每当我使用此方法 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 语言标准遗留的。
- https://en.wikipedia.org/wiki/String_literal#Escape_sequences
- https://en.wikipedia.org/wiki/Escape_sequences_in_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"