VB中Like运算符

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VB中Like运算符
Like 运算符
⽤来⽐较两个字符串。

语法
result = string Like pattern
Like 运算符的语法具有以下⼏个部分:
部分描述
result 必需的;任何数值变量。

string 必需的;任何字符串表达式。

说明
如果 string 与 pattern 匹配,则 result 为 True;如果不匹配,则 result 为 False。

但是如果 string 或 pattern 中有⼀个为 Null,则 result 为 Null。

Like 运算符的特性随着 Option Compare 语句⽽不同。

每个模块的缺省字符串⽐较⽅法是 Option Compare Binary。

在字符串⽐较中,Option Compare Binary 的结果是根据字符的内部⼆进制表⽰法导出的排序顺序得到的。

在 Microsoft Windows 中,排序顺序由代码页决定。

下例说明通常⼆进制的排序顺序:
A <
B < E < Z < a < b < e < z < _ < _ < _ < _ < _ < ?/FONT>
在字符串⽐较中,Option Compare Text 的结果是字符串⽐较,它建⽴在不区分⼤⼩写的⽂本排序顺序基础上,⽽这⼀排序顺序是由系统的国别确定的。

在对相同的字符使⽤ Option Compare Text 时会产⽣以下⽂本排序顺序:
组合来匹配字符串。

下列表格指出 pattern 中允许的字符以及它们与什么进⾏匹配:
pattern 中的字符符合 string 中的
任何单⼀字符。

* 零个或多个字符。

# 任何⼀个数字 (0–9)。

[charlist] charlist.中的任何单⼀字符。

[!charlist] 不在 charlist 中的任何单⼀字符。

在中括号 ([ ]) 中,可以⽤由⼀个或多个字符 (charlist) 组成的组与 string 中的任⼀字符进⾏匹配,这个组⼏乎包括任何⼀个字
指定范围的意义取决于运⾏时的有效字符排序(正如 Option Compare 和系统的国别设置所确定的,代码在运⾏之中)。

使⽤Option Compare Binary ⽰例可以看到,范围 [A–E] 与 A、B 和 E 相匹配。

通过 Option Compare Text 可以看到,[A–E] 与 A, a, _, _, B, b, E, e 相匹配。

此范围与 _ 或 _ 不匹配,因为按照排序顺序,重⾳字符在⾮重⾳字符之后。

下⾯列举的是模式匹配的其它重要规则:
charlist 开头的惊叹号 (!) 意味着,如果在 string 中找到任何不属于 charlist 的字符,则存在⼀个匹配。

如果在⽅括号之外使⽤惊叹号,则惊叹号与⾃⾝匹配。

连字符 (–) 可以出现在 charlist 的开头(如果使⽤惊叹号,则在惊叹号之后),也可以出现在 charlist 的结尾与⾃⾝匹配。

在任何其它地⽅,连字符⽤来识别字符的范围。

字符序列 [] 被看作是长度为零的字符串 ("")。

当⼀个语⾔使⽤了⼀个特殊字符,⽽且这个字符在系统地区设置中已被指定的时候,在 pattern 或 string 中出现的单⼀特殊字符将与其他字符串中等价的两个字符相匹配。

与此相似,由⽅括号括起来的 pattern 中的单⼀特殊字符(字符本⾝在列表或范围内)将与 string 中等价的两个字符序列匹配。

Like 运算符⽰例
本⽰例使⽤ Like 运算符做字符串的⽅式⽐较。

MyCheck = "F" Like "[!A-Z]" ' 返回 False。

MyCheck = "a2a" Like "a#a" ' 返回 True。

MyCheck = "aM5b" Like "a[L-P]#[!c-e]" ' 返回 True。

MyCheck = "BAT123khg" Like "B?T*" ' 返回 True。

MyCheck = "CAT123khg" Like "B?T*" ' 返回 False。

********************************************************************
相对于本⾝的潜在功能,L I K E可能是最被忽视的⼀个操作符了。

它的最基本⽤途是检查⼀个字符串与给定样式的匹配程度。

⽐如,很容易检查⼀个产品ID号是否由⼀个字母以及3个数字组成:
If ProductID Like "[A-Za-z][0-9][0-9][0-9]" Then Print "OK"
或者:
If ProductID Like "[A-Za-z]###" Then Print "OK"
除了上述基本功能,LIKE在其他情况下也⾮常有⽤。

⽐如,可以检查⼀个字符串只包含⼤写字母:
If Not StringVar Like "*[!A-Z]*" Then Print "OK"
同理,也可以检查⼀个字符串只包含数字:
If Not StringVar Like "*[!0-9]*" Then Print "OK"
检查⼀个字符串只包含字母或者数字符:
If Not StringVar Like "*[!A-Za-z0-9]*" Then Print "OK"
检查⼀个字符串是否为合法的VB变量名,就是说,开头是⼀个字母,接着跟随字母或数字符:
If VarName like "[A-Za-z]*" And Not Mid$(VarName, 2) Like "*[!A-Z_a-z0-9]*" Then Print "OK"
检查字符串是否⾄少包含2个空格(连续的或者间隔的):
If TestString Like "* * *" Then Print "OK"
进⼀步确认2个空格是不连续的:
If TestString Like "* ?* *" Then Print "OK"
检查⼀个有符号整数是很复杂的事情,因为必须计算出前导符号并且计算好"#"符号的正确数⽬:
If NumValue Like "#" Or (Len(NumValue) > 1 And NumValue Like "[-+0-9]" & String$(Len(NumValue) - 1, "#")) Then Print "OK"
检测NumValue是否包含⼀个有符号的⼗进制数值。

这种情况下,我们必须要确定存在⼀个前导符号以及只有⼀个⼗进制分隔符,并且所有其他字符都是数字符:
If NumValue Like "#" Or (Len(NumValue) > 1 And Left$(NumValue, 1) Like "[-+.0-9]" And Not Mid$(NumValue, 2) Like "* [!.0-9]*" And Not NumValue Like "*.*.*" ) Then Print "OK"。

相关文档
最新文档