我试图编写一个If then语句来查看字符串中是否有空格。如果确实如此,我希望它能够提供一个"和"变量周围。以下是我目前的代码:
If ColumnText.Contains(" ") Then
MsgBox(""" & ColumnText & """)
End If
Next
但它引用了所有内容......有什么建议吗?
答案 0 :(得分:2)
要在VB的双引号字符串文字中正确地转义双引号,你需要加倍它(没有双关语)。这意味着一个空字符串""
。当你在其中压缩一个引号时,你得到4个引号""""
,这实际上只意味着一个双引号文字。
您应该使用:
MsgBox("""" & ColumnText & """")
而不是:
MsgBox(""" & ColumnText & """)
另一件事 - 请注意语法分析器在有3个引号时如何突出显示您的行。在这种情况下,& ColumnText &
是文字的一部分,而不是内联变量。
参考:
答案 1 :(得分:1)
使用引号文字会导致难以阅读的代码,如此处所示,很容易导致错误。我发现使用(和阅读)String.Format
更加容易,并以不同的方式隔离您想要调出的内容。例如:
msg = String.Format("There is a problem with [{0}]", columnText)
结果:There is a problem with [foobar]
如果您真的喜欢引号,或者需要其他类似命令行参数,那么您仍然可以通过这种方式使代码更加清晰:
Const quote As String = """"
' or
Private quote = Convert.ToChar(34) ' 34 is the code for the quote char
'...
msg = String.Format("There is a problem with {0}{1}{0}", quote, columnText)
结果:There is a problem with "foobar"
如果要用引号包装多个内容,只需为每个引号重复{0}
,如图所示。
答案 2 :(得分:0)
你可以试试这个:
If ColumnText.Contains(" ") Then
MsgBox(Chr(34) & ColumnText & Chr(34))
End If
Next