Добавление кавычек в строку в VBScript - PullRequest
52 голосов
/ 31 мая 2010

У меня есть этот код:

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

После запуска значение g равно abcd xyz.

Однако я хочу кавычки вокруг значения a в g. После запуска кода вместо g должно быть abcd "xyz".

Как мне это сделать?

Ответы [ 8 ]

88 голосов
/ 31 мая 2010

Вы можете убежать, удвоив кавычки

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

или написав явный chr() вызов

g="abcd " & chr(34) & a & chr(34)
15 голосов
/ 31 мая 2010

Вы должны использовать двойные двойные кавычки, чтобы избежать двойных кавычек (смеется):

g = "abcd """ & a & """"
8 голосов
/ 31 мая 2010

Я обычно делаю это:

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
5 голосов
/ 07 октября 2013

Традиционным способом указания кавычек является использование Chr(34). Это устойчиво к ошибкам и не является мерзостью.

Chr(34) & "string" & Chr(34)
0 голосов
/ 26 февраля 2015

Я разработал простой подход, используя одинарные кавычки при формировании строк и затем вызывая функцию, которая заменяет одинарные кавычки на двойные.

Конечно, этот подход работает до тех пор, пока вам не нужно включать в строку фактические одинарные кавычки.

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

...

Надеюсь, это поможет.

0 голосов
/ 12 декабря 2014

Я не думаю, что смогу улучшить эти ответы, поскольку я использовал их все, но я предпочитаю объявлять константу и использовать ее, поскольку это может быть настоящей болью, если у вас длинная строка и вы пытаетесь приспособиться к правильное количество кавычек и ошибиться. ;)

0 голосов
/ 28 июля 2013

Я нашел ответ использовать двойные и тройные кавычки неудовлетворительным. Я использовал вложенный DO ... LOOP, чтобы написать сегмент кода ASP. В строке есть повторяющиеся кавычки. Когда я запустил код:

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

вывод был: <`asp: RectangleHotSpot Bottom =" 28 </p>

 '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"/>
0 голосов
/ 31 мая 2010

Вы можете сделать как:

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

Или:

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