您可以关闭VBScript字符串中的区分大小写吗?
问题描述:
我很确定这个答案是否定的。我知道我可以写您可以关闭VBScript字符串中的区分大小写吗?
如果LCASE(strFoo)= LCASE(的Request.QueryString( “X”))然后......
或使用INSTR,但我只是想检查有并不是埋没在注册表中的某些未记录的设置,或者是使VBScript字符串的内容与其他脚本语言一致的地方!
感谢 丹
答
我怀疑,因为如果有这样的事情这种选择的存在,你使用它,你将失去在大小写敏感的方式比较字符串的能力。
答
否。根据函数的不同,可能有选项(例如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))
答
有一个StrComp
功能,它允许执行情况通过传递vbTextCompare
作为第三个参数的两个字符串的敏感性比较。主要文件没有那么明显,但在这篇Hey, Scripting Guy文章中讨论过。
例如:
If StrComp(strFoo, Request.QueryString("x"), vbTextCompare) = 0 Then ...
然而,在实践中,我使用LCase
或UCase
方式比StrComp
多为不区分大小写字符串比较,因为它更明显,我。
传入vbTextCompare(或保留第三个参数)为二进制(区分大小写)compare;传入`1`进行文本(不区分大小写)比较 – JohnB 2010-09-10 05:09:07