Like 运算符
比较运算符 | InStr 函数 | Visual Basic 中的运算符优先级 | 运算符(按功能列出) | Option Compare 语句 | StrComp 函数 | 运算符 比较两个字符串。
result = string Like pattern 各部分说明 result 必选项。任何 Boolean 变量。结果是 Boolean 值,它表示 string 是否匹配 pattern。 string 必选项。任何 String 表达式。 pattern 必选项。任何符合“备注”中描述的模式匹配约定的 String 表达式。 备注 如果 string 匹配 pattern,则 result 为 True;如果不匹配,则 result 为 False。如果 string 和 pattern 都是空字符串,则结果是 True。否则,如果 string 或 pattern 中有一个为空字符串,则结果为 False。
Like 运算符的行为取决于 Option Compare 语句。每个模块的默认字符串比较方法是 Option Compare Binary。
内置的模式匹配为字符串比较提供了一种多功能工具。模式匹配功能允许您使用通配符、字符列表或字符范围的任何组合来匹配字符串。下表显示 pattern 中允许的字符和这些字符的匹配项:
pattern 中的字符 string 中的匹配项 ? 任何单个字符 * 零或更多字符 # 任何单个数字(0 到 9) [charlist] charlist 中的任何单个字符 [!charlist] 不在 charlist 中的任何单个字符
括在方括号 ([ ]) 内的一个或多个字符的组 (charlist) 可以用于匹配 string 中的任何单个字符,并且可以包含几乎任何字符代码(包括数字)。
注意 若要匹配特殊字符,如左方括号 ([)、问号 (?)、数字符号 (#) 和星号 (*),请将它们括在方括号中。不能在组中使用右方括号 (]) 来匹配它自己,但可以在组外作为单个字符使用。 通过使用连字符 (–) 将范围的上下限分开,charlist 可以指定字符的范围。例如,如果 string 中的相应字符位置包含范围 A–Z 中的任何大写字母,则 [A-Z] 将产生匹配。可以在方括号中包括多个范围而不用分隔符。
指定范围的含义取决于在运行时有效的字符排序(由 Option Compare 和运行代码的系统的区域设置确定)。当使用 Option Compare Binary 时,范围 [A–E] 匹配 A、B、C、D 和 E。当使用 Option Compare Text 时,[A–E] 匹配 A、a、à、à、B、b、C、c、D、d、E 和 e。该范围不匹配 ê 或 ê,因为在排序顺序中,重音字符排在非重音字符之后。
模式匹配的其他重要规则包括:
charlist 开始处的感叹号 (!) 意味着仅当在 string 中找到除 charlist 以外的任何字符时才发生匹配。当在方括号外使用时,感叹号匹配它自己。 连字符 (-) 可以出现在 charlist 的开始处(如果有感叹号,则在它后面)或结尾处以匹配它自己。在任何其他位置,连字符标识由连字符两侧的字符界定的字符范围。 在指定字符范围时,这些字符必须以升序排序顺序出现(即,从最低到最高)。因此,[A-Z] 是有效的模式,但 [Z-A] 不是。 字符序列 [] 被视为零长度字符串 ("")。 在某些语言中,字母表中有一些表示两种不同字符的特殊字符。例如,有几种语言使用字符 ? 来表示字符 a 和 e(当这两个字符一起出现时)。Like 运算符认为该单个特殊字符与这两个字符是等效的。
当在系统区域设置中指定使用特殊字符的语言时,在 pattern 或 string 中出现的单个特殊字符都匹配其他字符串中等效的双字符序列。与此类似,括在方括号内的 pattern 中的单个特殊字符(独立存在、在列表中或在某个范围内)匹配 string 中等效的双字符序列。
示例 本示例使用 Like 运算符将字符串与模式比较。结果是 Boolean 值,它表示该字符串是否符合该模式。
Dim myCheck As Boolean myCheck = "F" Like "F" ' Does "F" match "F"? Returns True. myCheck = "F" Like "f" ' Does "F" match "f"? Returns False. myCheck = "F" Like "FFF" ' Does "F" match "FFF"? Returns False. myCheck = "aBBBa" Like "a*a" ' Does "aBBBa" have a "a" at the ' beginning, an "a" at the end, and any number of characters in ' between? Returns True. myCheck = "F" Like "[A-Z]" ' Does "F" occur in the set of ' characters from A to Z? Returns True. myCheck = "F" Like "[!A-Z]" ' Does "F" NOT occur in the set of ' characters from A to Z? Returns False. myCheck = "a2a" Like "a#a" ' Does "a2a" begin and end with an ' "a" and have any single-digit number inbetween? Returns True. myCheck = "aM5b" Like "a[L-P]#[!c-e]" ' Does "aM5b" fit the following ' pattern: Begins with "a", has and character from the set L through ' P, followed byb any single-digit number, and finally contains any ' character excluded from the character set c through e. Returns True. myCheck = "BAT123khg" Like "B?T*" ' Does "BAT123khg" fit the ' following pattern: Begins with "B", followed by any single ' character, followed by a "T" and finally zero or more characters ' of any type. Returns True. myCheck = "CAT123khg" Like "B?T*" ' Does "CAT123khg" fit the ' following pattern: Begins with "B", followed by any single ' character, followed by a "T" and finally zero or more characters ' of any type. Returns False.
Option Compare 语句请参见 比较运算符 | InStr 函数 | InStrRev 函数 | Option Strict 语句 | Option Explicit 语句 | Replace 函数 | Split 函数 | StrComp 函数 | /optionexplicit | /optionstrict | /optioncompare:binary | /optioncompare:text 用于在文件级声明当比较字符串数据时所使用的默认比较方法。
Option Compare { Binary | Text } 各部分说明 Binary 可选项。导致基于从字符的内部二进制表示形式导出的排序顺序进行字符串比较。 Text 可选项。导致基于由系统的区域设置确定的不区分大小写的文本排序顺序进行字符串比较。 备注 如果使用,则 Option Compare 语句必须出现在文件中其他任何源语句之前。
Option Compare 语句为类、模块或结构指定字符串比较方法(Binary 或 Text)。如果未包括 Option Compare 语句,则默认的文本比较方法是 Binary。
在 Microsoft Windows 中,排序顺序由代码页确定。在下面的示例中,使用 Option Compare Binary 对字符进行排序,将产生典型的二进制排序顺序:
A < B < E < Z < a < b < e < z < à < ê < ? < à < ê < ? 如果使用 Option Compare Text 对同样的字符进行排序,将产生下面的文本排序顺序:
(A=a) < (à = à) < (B=b) < (E=e) < (ê = ê) < (Z=z) < (? = ?) 示例 本示例使用 Option Compare 语句设置默认的字符串比较方法。只能在模块级使用 Option Compare 语句。
' Set the string comparison method to Binary. Option Compare Binary ' That is, "AAA" is less than "aaa". ' Set the string comparison method to Text. Option Compare Text ' That is, "AAA" is equal to "aaa". 请参见 比较运算符 | InStr 函数 | InStrRev 函数 | Option Strict 语句 | Option Explicit 语句 | Replace 函数 | Split 函数 | StrComp 函数 | /optionexplicit | /optionstrict | /optioncompare:binary | /optioncompare:text