在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"/>