我发现每当我使用这个方法字符串时。Format(),它为我的变量值添加了额外的引号和反斜杠。
string value = string.Format("sample {0}", someText);
在VS Watch上,我看到了以下结果:
"sample "blah""
在文本可视化工具中,我得到的是:
sample "blah"
有人能告诉我为什么我拿不到这个吗?
"sample blah"
请注意:我已经有了一个解决方法,即string.Replace(""","")
,但我只想知道额外的引号是在哪里添加的
我100%确信,在您的上下文中,某些文本包含额外的引号。
string.Format("sample {0}", "blah")
返回"sample blah"
这只与VS调试有关。它实际上并没有向字符串添加任何内容。VS只是转义字符串,无需担心或处理。
编辑:要获得sample blah
(不带任何引号)而不是sample "blah"
,您需要替换引号:
Console.WriteLine(value.Replace(""", "");
现在,在VS Debugger中,您可以看到以下内容:"sample blah"
,而在文本文件中,例如,您将看到sample blah
它显示您的sometext
包含"blah"而不是blah。这就是调试期间出现"
的原因。
您的格式字符串中没有任何引号。如果希望字符串包含引号,则需要在格式字符串中添加引号。
字符串foo="foo"foo的值为foo
字符串foo="\"foo\"foo的值为"foo"
此string.Format
根本不会向任何字符串添加任何内容。
区别在于如何在Visual Studio和文本可视化工具中查看字符串。因为"
是一个转义序列字符,所以您需要在代码部分中将其用作"
。
据我所知,这些转义序列字符是C语言标准遗留下来的。
- https://en.wikipedia.org/wiki/String_literal#Escape_sequences
- https://en.wikipedia.org/wiki/Escape_sequences_in_C
有人能告诉我为什么我拿不到这个吗?
"样品"
因为在您的示例中,您没有执行任何操作来获取此字符串。字符串的开头或结尾都没有转义的"
字符。您可以在字符串中使用转义符。format类似;
string someText = "blah";
string value = string.Format(""sample {0}"", someText);
结果将是;
"sample blah"