如何在VBScript中转义斜杠(/)?

8
如何在 VBScript 中转义正斜杠字符 (/)?例如,在以下字符串中:
bob = "VU administration/front desk"
3个回答

15

你不需要转义它:在PHP或VBScript中,它没有任何特殊含义,因此不需要进行转义。在VBScript中,您唯一需要转义的字符是双引号,而双引号本身可以进行转义:

MyString = "He said, ""Here's how you escape a double quote in vbscript. Slash characters -- both forward (/) and back (\) -- don't mean anything, even when used with common control characters like \n or \t."""

同样地,在php中,反斜杠需要转义自身,但斜杠不需要任何特殊处理。

3

这太错误了,我必须对此发表评论。问题是关于VBScript,而不是PHP,所以谁在乎PHP如何处理斜杠?在VB中,斜杠/确实有特殊含义。字符/代表DOUBLE。如果您的代码编辑器将此字符显示为DOUBLE,或者在您不打算转换为DOUBLE时出现转换为DOUBLE的错误,则可能需要修复字符串中的某些内容。

例如,在此查询字符串中,VB将正斜杠/视为DOUBLE,程序将在此处失败,因为无法将选择replace(convert(char(10),pih.updateon,111),从文本转换为double。

Dim sQuery As String = "select replace(convert(char(10),pih.updateon,111),"/","-") as stopdate from myTable"

然而,问题很可能不是斜杠转义的问题。你很可能在其他地方出了差错。在这种情况下,如果你正确输入了字符串,它应该是这样的:

Dim sQuery As String = "select replace(convert(char(10),pih.updateon,111),'/','-') as stopdate from myTable"

希望这个例子有助于理解,如果你在斜杠方面遇到问题,可能是哪里出了错。

补充说明:在VBScript和VB中,主要区别是VB编译,而VBScript解释,此时语法的处理方式相同。

d-bo


2
两个重要的语法差异:不允许使用“Dim Var As…”(类型声明),而且单引号(')表示注释,而不是字符字面量。因此,答案仍然与VBScript无关——在VBScript中,“/”只是一个像“A”一样的字母,不能/必须不被转义。(点赞者应三思而后行) - Ekkehard.Horner
@Ekkehard.Horner,我找到了一个情况,在hta文件中我必须使用Chr(47)“转义”“/”。 - Silent Sojourner
@SilentSojourner - 但你在HTML中找到了它,不是在<script>块中。 - Ekkehard.Horner

1

虽然这个讨论已经很晚了,但当我在研究类似问题时,我发现了这个主题,因为我试图匹配独立的HTML标签中的正斜杠。

根据VBA word.find.execute method 文档

要搜索符号字符,请键入插入符号 (^),数字 0,然后是符号的字符代码。例如,“^0151” 对应于长划线(—)。

从VBA文档上看character set code

正斜杠“/”对应于47,您可以通过验证

Debug.Print ("Char Code 47: " & vbTab & Chr(47))

使用类似以下方式的查找匹配:

With Range.Find
    .MatchWildCards = True
    .Text = "\<?*.PNG^047\>"
    Do While .Execute [...]

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