VB中字符串匹配的多种方式

   这段时间在移植项目的过程中,起初我想判断一个字符串中是否存在某字符(串),直接的使用方法是用instr(start,string1,string2,VB compare),但经过分析在VB中可以只用一下方法来判断!

   1.常用的INStr方法

   

   判断string1中从start开始的位置第一次出现string2的位置

 

2.使用正则表达式

   在VB中需要引入Library VBScript_RegExp_55
   位置在C:/WINDOWS/System32/vbscript.dll/3
    Microsoft VBScript Regular Expressions 5.5

   当然,你可以直接在项目中引用,使用方法如下:

 

3.第三种是比较特别的方法,是采用if string like [parttern],即string需要满足parttern中的模式,才会返回true,其具体定义如下:

语法   
    
  result   =   string   Like   pattern   
    
  Like   运算符的语法具有以下几个部分:   
    
  部分   描述     
  result   必需的;任何数值变量。     
  string   必需的;任何字符串表达式。     
  pattern   必需的;任何字符串表达式,遵循“说明”中的模式匹配约定。     
    
    
  说明   
    
  如果   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   时会产生以下文本排序顺序:   
    
  (A=a)   <   (_=_)   <   (B=b)   <   (E=e)   <   (_=_)   <   (Z=z)   <   (_=_)     
    
  内建的模式匹配功能提供了多种工具来进行字符串比较。有了模式匹配功能就可以使用通配符、字符串列表或字符区间的任何组合来匹配字符串。下列表格指出   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   和   E   相匹配。通过   Option   Compare   Text   可以看到,[A–E]   与   A,   a,   _,   _,   B,   b,   E,   e   相匹配。此范围与   _   或   _   不匹配,因为按照排序顺序,重音字符在非重音字符之后。   
    
  下面列举的是模式匹配的其它重要规则:     
    
  charlist   开头的惊叹号   (!)   意味着,如果在   string   中找到任何不属于   charlist   的字符,则存在一个匹配。如果在方括号之外使用惊叹号,则惊叹号与自身匹配。   
    
    
  连字符   (–)   可以出现在   charlist   的开头(如果使用惊叹号,则在惊叹号之后),也可以出现在   charlist   的结尾与自身匹配。在任何其它地方,连字符用来识别字符的范围。   
    
    
  当指定了字符范围时,这些字符必须按照升序(从最小到最大)顺序来显示。[A-Z]   是有效模式,但   [Z-A]   不是。   
    
    
  字符序列   []   被看作是长度为零的字符串   ("")。     
  某些语言的字母表中有一些特殊字符,它们表示两个分开的字符。例如,在一些语言中,当字符   "a"   与   "e"   同时出现时,用   "_"   来表示字符   "a"   与   "e"。Like   运算符可以辨认出单一的特殊字符和两个个别字符是否相等。   
    
  当一个语言使用了一个特殊字符,而且这个字符在系统地区设置中已被指定的时候,在   pattern   或   string   中出现的单一特殊字符将与其他字符串中等价的两个字符相匹配。与此相似,由方括号括起来的   pattern   中的单一特殊字符(字符本身在列表或范围内)将与   string   中等价的两个字符序列匹配。

示例:Dim   MyCheck   
  MyCheck   =   "aBBBa"   Like   "a*a"       '   返回   True。   
  MyCheck   =   "F"   Like   "[A-Z]"       '   返回   True。   
  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。   

 

 

 

 

以上就是常用的匹配方法,大家根据需要采用不同的方法进行匹配,但我推荐使用if 。。。like 。。。的方式,这种方法既准确有快速!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值