在VBScript中为字符串添加引号

60

我有这段代码:

a = "xyz"  
g = "abcd " & a  
运行代码后,g的值为abcd xyz。但是,我希望在ga的值周围加上引号。运行代码后,g应该变为abcd "xyz"。如何实现这个目标?
8个回答

94

你可以通过将引号加倍来转义

g="abcd """ & a & """"

或者编写一个显式的 chr() 调用

g="abcd " & chr(34) & a & chr(34)

17

你必须使用双重双引号来转义双引号 (哈哈):

g = "abcd """ & a & """"

在编程语言中,使用特殊字符自身进行转义并不罕见,比如在C风格的语言中使用双反斜杠,或者在SQL中使用双单引号。 - Tomalak
非常有趣 :) 是的,这就是在VBS中前进的方式 - Jimmy Ilenloa

8
我通常会这样做:
Const Q = """"

Dim a, g
a = "xyz"  
g = "abcd " & Q & a & Q

如果您在代码中经常需要将字符串用引号括起来,并且发现以上方法过于繁琐或难以阅读,您也可以将其包装在一个函数中:

a = "xyz"  
g = "abcd " & Q(a)

Function Q(s)
  Q = """" & s & """"
End Function

8
传统的指定引号的方法是使用Chr(34)。这种方法具有抗错误性,不是一种可憎的做法。
Chr(34) & "string" & Chr(34)

0

你可以这样做:

a="""xyz"""  
g="abcd " & a  

或者:

a=chr(34) & "xyz" & chr(34)
g="abcd " & a  

0

我认为我无法改进这些答案,因为我已经使用了它们所有,但我的首选是声明一个常量并将其用作变量。如果您有一个很长的字符串并尝试使用正确数量的引号进行适应,可能会非常麻烦,而且会犯错误。


0

我设计了一种简单的方法,使用单引号来形成字符串,然后调用一个函数将单引号替换为双引号。

当然,只要您不需要在字符串中包含实际的单引号,这种方法就可以工作。

Function Q(s)

    Q = Replace(s,"'","""")

End Function

...

user="myself"
code ="70234"
level ="C"

r="{'User':'" & user & "','Code':'" & code & "','Level':'" & level & "'}"
r = Q(r)
response.write r

...

希望这能有所帮助。

-2

我发现使用双引号和三引号的答案并不令人满意。我使用了嵌套的 DO...LOOP 来编写 ASP 代码段。字符串中有重复的引号。当我运行代码时:

thestring = "<asp:RectangleHotSpot Bottom=""" & bottom & """ HotSpotMode=""PostBack"" Left="""& left & """    PostBackValue=""" &xx & "." & yy & """ Right=""" & right & """ Top=""" & top & """/>"

输出结果为: <`asp:RectangleHotSpot Bottom="28

 'Changing the code to the explicit chr() call worked:

thestring = "<asp:RectangleHotSpot Bottom=""" & bottom & chr(34) & " HotSpotMode=""PostBack"" Left="""& left & chr(34) & " PostBackValue=""" &xx & "." & yy & chr(34) & " Right=""" & right & chr(34) & " Top=""" & top & chr(34) &"/>"

输出:

<asp:RectangleHotSpot Bottom="28" HotSpotMode="PostBack" Left="0" PostBackValue="0.0" Right="29" Top="0"/>

1
chr(34) 是可行的。但是转义双引号也可以。你的顶部示例代码不会输出你所声称的内容;那里肯定有其他问题。你的“可行”示例甚至包括转义,证明它确实可行。 - Andrew Barber
输出代码中的数字来自分配给变量的值。这段代码只是一个片段。整个输出是一个178 KB的文件。双引号和三引号确实可以使用,但不是我所需要的。我不知道为什么,但这并不改变它在我的情况下没有按照应有的方式工作的事实。我正在将输出写入文件。可能是在嵌套循环中使用多个转义符,同时使用一个解释的代码来编写另一个代码,并将其写入文件对于VBscript解释器来说太过复杂了。 - Russell S

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