在VBScript中为字符串添加引号

时间:2010-05-31 09:19:20

标签: vbscript escaping string-concatenation

我有这段代码:

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

运行后,g的值为abcd xyz

但是,我想在a中围绕g的值引用。运行代码后,g应为abcd "xyz"

我该如何做到这一点?

8 个答案:

答案 0 :(得分:87)

你可以通过加倍引号来逃避

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

或撰写明确的chr()电话

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

答案 1 :(得分:15)

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

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

答案 2 :(得分: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

答案 3 :(得分:4)

指定引号的传统方法是使用Chr(34)。这是错误的,并不是一种憎恶。

Chr(34) & "string" & Chr(34)

答案 4 :(得分:0)

你可以这样做:

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

或者:

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

答案 5 :(得分:0)

我不认为我可以改进这些答案,因为我已经全部使用了它们,但我的偏好是声明一个常量并使用它,因为如果你有一个很长的字符串并试图适应它可能是一个真正的痛苦正确的报价数量并犯了一个错误。 ;)

答案 6 :(得分: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

...

希望这有帮助。

答案 7 :(得分:-2)

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

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

输出是: &lt;`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"/>