你能在VBScript字符串中关闭区分大小写吗?

时间:2008-11-20 15:38:30

标签: asp-classic vbscript

我很确定答案是否定的。我知道我可以写

  

如果lcase(strFoo)= lcase(request.querystring(“x”))则...

或使用inStr,但我只是想检查一下,是否有一些未记录的设置隐藏在注册表中或某处使得VBScript字符串的内容与脚本语言的其余部分保持一致!

由于 丹

3 个答案:

答案 0 :(得分:10)

有一个StrComp函数,它允许通过传递vbTextCompare作为第三个参数来对两个字符串进行不区分大小写的比较。主要文档没有那么明显,但在Hey, Scripting Guy文章中对此进行了讨论。

例如:

If StrComp(strFoo, Request.QueryString("x"), vbTextCompare) = 0 Then ...

但是,在实践中,我使用LCaseUCase方式而不是StrComp进行不区分大小写的字符串比较,因为这对我来说更明显。

答案 1 :(得分:5)

没有。根据功能,选项可能在那里(例如InStr)作为可选参数,但是为了直接比较,没有全局选项。

一个鲜为人知的选项可能很方便,如果你有一个字符串列表,你想看一个字符串是否在该列表中:

Dim dicList : Set dicList = CreateObject("Scripting.Dictionary")
Dim strTest

dicList.CompareMode = 0 ' Binary ie case sensitive
dicList.Add "FOO", ""
dicList.Add "BAR", ""
dicList.Add "Wombat", ""

strTest = "foo"
WScript.Echo CStr(dicList.Exists(strTest))

Set dicList = CreateObject("Scripting.Dictionary")
dicList.CompareMode = 1 ' Text ie case insensitive
dicList.Add "FOO", ""
dicList.Add "BAR", ""
dicList.Add "Wombat", ""

strTest = "foo"
WScript.Echo CStr(dicList.Exists(strTest))

答案 2 :(得分:1)

我怀疑是否存在这样的选项,因为如果有类似的东西并且你使用它,你将失去以区分大小写的方式比较字符串的能力。