VB.NET,向字符串添加双引号字符

7
每次我在字符串中添加CharW(34)时,它会添加两个""符号。
例如:
text = "Hello," + Char(34) + "World" + Char(34)

文本的结果

"Hello,""World"""

如何仅添加一个"符号?

例如,理想结果应为:

"Hello,"World""

我也尝试过以下方法:

text = "Hello,""World"""

但我仍然得到了双重引号符号"

此外,添加一个CharW(39),它只会产生一个'符号吗?例如

text = "Hello," + Char(39) + "World" + Char(39)

结果

"Hello,'World'"

为什么这只对双引号有异常行为?如何添加一个而非两个?

3个回答

14

假设您指的是旧版的Chr函数而不是类型Char。 它并不会添加两个引号字符,只会添加一个。 如果您将字符串输出到屏幕或文件中,您会发现它只添加了一个引号。 但Visual Studio调试器显示的是VB字符串文字表示形式而不是原始字符串值本身。 由于在字符串中转义双引号字符的方法是连续放置两个双引号字符,因此它就是以这种方式显示的。 例如,您的代码:

text = "Hello," + Chr(34) + "World" + Chr(34)

也可以更简单地写成:

text = "Hello,""World"""

因此,调试器只是以 VB 语法显示它,就像在 C# 中,调试器会将该值显示为"Hello, \"World\""


抱歉,我是指 'ChrW'。感谢您的协助,这是我在即时窗口看到的,所以如果只有一个,那么我的问题必须出在其他地方!谢谢! - Harvey
即时窗口还显示VB文字语法,而不仅仅是值。监视和本地窗口也是如此。 - Steven Doggart
你可以通过查看字符串的开头和结尾引号来判断。这些引号实际上也不是字符串值的一部分,它们只是在VB代码中表示字符串值的文字方式。 - Steven Doggart
我现在明白了,并已经相应地解决了我的问题。谢谢你的帮助。 - Harvey

2

这段文本实际上没有双引号。调试器会对文本进行引号处理,以使其显示为源代码中的样子。如果您在C#中执行相同操作,则使用源代码格式显示嵌入的换行符。

您可以在源代码中添加语句以在调试窗口中显示值,而不是使用调试器的输出。

Diagnostics.Debug.WriteLine(text)

这应该只显示单引号。


0

这很简单, 只需要使用:ControlChars.Quote "你好," & ControlChars.Quote & "世界" & ControlChars.Quote


4
请不要告诉别人一个编程挑战题目是“非常容易”的 - 对他们来说并不容易。此外,与被接受的解决方案相比,你的解决方案怎么能算是非常容易呢? - David Makogon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接