Like 运算符

用于比较两个字符串。

语法

结果 = 字符串Like模式

Like 运算符语法包含以下部分:

Part 说明
result 必需,任何数值变量
string 必需;任何字符串表达式
pattern 必需;任何符合备注中所述的模式匹配约定的字符串表达式。

备注

如果 stringpattern 匹配,则 resultTrue;如果没有匹配项,则 resultFalse。 如果 stringpatternNull,则 resultNull

Like 运算符的行为取决于 Option Compare 语句。 每个模块的默认 string-comparison 方法为 Option Compare Binary

Option Compare Binary 根据派生自字符的内部二进制表示形式的排序顺序生成字符串比较。 排序顺序由代码页确定。

以下示例中显示了典型的二进制排序顺序:

A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø

Option Compare Text 根据由系统的区域设置确定的不区分大小写的文本排序顺序生成字符串比较。 当使用 Option Compare Text 为相同的字符排序时,将生成以下文本排序顺序:

(A=a) < (À=à) < (B=b) < (E=e) < (Ê=ê) < (Z=z) < (Ø=ø)

内置模式匹配为字符串比较提供了一个功能多样的工具。 利用模式匹配功能,您可以将通配符、字符列表或字符范围任意组合使用来匹配字符串。 下表显示了 pattern 中允许使用的字符以及它们的匹配项:

pattern 中的字符 string 的匹配项
? 任意单个字符。
* 零个或多个字符。
# 任何个位数 (0-9) 。
[ charlist ] charlist 内的任意单个字符。
[ charlist ] charlist 外的任意单个字符。

一组包含一个或多个字符 ( 字符列表 ) 括在方括号 ([ ] 中,) 可用于匹配 字符串 中的任何单个字符,并且几乎可以包含任何 字符代码,包括数字。

注意

要匹配特殊字符左方括号 ([)、问号 (?)、数字符号 (#) 和星号 (*),则用方括号将它们括起。 右方括号 (]) 不能在组中使用以匹配它本身,但可在组外部作为单独的字符使用。

通过使用连字符 (-) 分隔范围的上限和下限,charlist 可指定字符的范围。 例如, [A-Z] 如果 字符串 中的相应字符位置包含区域 A-Z 中的任何大写字母,则会导致匹配。 方括号中包含了多个范围而没有使用分隔符。

指定范围的含义取决于在 运行时 有效的字符排序 (由 Option Compare 确定,以及代码在) 上运行的系统 的区域设置 。 使用 选项比较二进制 示例,范围 [A-E] 与 A、B 和 E 匹配。使用 Option Compare Text[A-E] 匹配 A、a、À、à、B、b、E、e。 该区域与 Ê 或 ê 不匹配,因为重音字符在排序顺序中位于非着色字符之后。

模式匹配的其他重要规则还包括:

  • 如果在 string 中找到除 charlist 中的字符之外的任何字符,则 charlist 开头的感叹号 (!) 表示以进行了匹配。 当在括号外部使用时,感叹号将匹配它本身。
  • 连字符 (-) 可显示在 charlist 的开头(如果使用了感叹号,则位于它后面)或结尾以匹配它本身。 在任何其他位置,连字符用于确定字符的范围。
  • 当指定了字符的范围时,它们必须以升序排序顺序显示(从最低到最高)。 [A-Z] 是有效的模式,而 [Z-A] 不是。
  • 字符序列 [] 被视为零长度字符串 (“”) 。

在某些语言中,字母中存在表示两个单独的字符的特殊字符。 例如,某些语言使用字符“æ”表示同时出现的“a”和“e”。 Like 运算符可识别单个特殊字符与两个单独的字符是否等效。

当在系统区域设置中指定了使用特殊字符的语言时,patternstring 中出现的单个特殊字符与其他字符串中的 2 字符序列等效。 同样,pattern 中用括号括起的单个特殊字符(在列表或范围中为字符本身)与 string 中的等效 2 字符序列匹配。

示例

本示例使用 Like 运算符将字符串与模式进行比较。

Dim MyCheck
MyCheck = "aBBBa" Like "a*a"    ' Returns True.
MyCheck = "F" Like "[A-Z]"    ' Returns True.
MyCheck = "F" Like "[!A-Z]"    ' Returns False.
MyCheck = "a2a" Like "a#a"    ' Returns True.
MyCheck = "aM5b" Like "a[L-P]#[!c-e]"    ' Returns True.
MyCheck = "BAT123khg" Like "B?T*"    ' Returns True.
MyCheck = "CAT123khg" Like "B?T*"    ' Returns False.
MyCheck = "ab" Like "a*b"    ' Returns True.
MyCheck = "a*b" Like "a [*]b"    ' Returns False.
MyCheck = "axxxxxb" Like "a [*]b"    ' Returns False.
MyCheck = "a [xyz" Like "a [[]*"    ' Returns True.
MyCheck = "a [xyz" Like "a [*"    ' Throws Error 93 (invalid pattern string).

另请参阅

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。