在VBScript中将引号添加到string中
我有这个代码:
a = "xyz" g = "abcd " & a
运行后, g
的值是abcd xyz
。
不过,我想要引用a
g
的值。 在运行代码之后, g
应该是abcd "xyz"
。
我怎样才能做到这一点?
你可以通过加倍报价来逃脱
g="abcd """ & a & """"
或者写一个显式的chr()
调用
g="abcd " & chr(34) & a & chr(34)
你必须使用双引号来避免双引号(lol):
g = "abcd """ & a & """"
我通常这样做:
Const Q = """" Dim a, g a = "xyz" g = "abcd " & Q & a & Q
如果您需要在代码中更频繁地使用引号括起string,并发现上述方法有嘈杂或无法读取,那么也可以将其封装在一个函数中:
a = "xyz" g = "abcd " & Q(a) Function Q(s) Q = """" & s & """" End Function
指定引号的传统方式是使用Chr(34)
。 这是错误抵制,不是一个可憎的。
Chr(34) & "string" & Chr(34)
你可以这样做:
a="""xyz""" g="abcd " & a
要么:
a=chr(34) & "xyz" & chr(34) g="abcd " & a
我不认为我可以改善这些答案,因为我已经使用了所有这些答案,但我的首选是声明一个常数,并使用它,因为如果你有一个很长的string,并尝试适应正确的数字的报价,并犯了一个错误。 ;)
在devisestring时,我使用单引号devise了一个简单的方法,然后调用一个用双引号replace单引号的函数。
当然,只要不需要在string中包含实际的单引号,这种方法就可以工作。
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
…
希望这可以帮助。
我发现使用双引号和三引号的答案不尽如人意。 我用一个嵌套的DO … LOOP来编写ASP代码段。 string中有重复的引号。 当我运行代码时:
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"/>