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

这篇博客汇总了VB中字符串匹配的各种方法,包括MD5加密函数的使用,以及相关字符串操作技巧,如汉字转拼音、二进制与十六进制转换等。同时,还提及了VB中的文件操作、注册表读写、网络通信等多个方面。
摘要由CSDN通过智能技术生成
 这段时间在移植项目的过程中,起初我想判断一个字符串中是否存在某字符(串),直接的使用方法是用instr(start,string1,string2,VB compare),但经过分析在VB中可以只用一下方法来判断!

1.常用的 InStr 方法
Function InStr ([Start], [String1], [String2], [Compare As VbCompareMethod = vbBinaryCompare] )
VBA.Strings 的成员
返回在另一字符串中第一次出现某一字符串的位置

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

2.使用正则表达式
在VB中需要引入Library VBScript_RegExp_55
位置在C: \ WINDOWS \ System32 \ vbscript.dll \ 3
Microsoft VBScript Regular Expressions 5.5
当然,你可以直接在项目中引用,使用方法如下:
Dim ResultString As String
Dim myRegExp As RegExp
Dim resultCollection As MatchCollection
Const pattern As String = "^\s*Dim\s+([\w|,|\s]+)(?:\s+As\s+Recordset)"
Public Function executes(SubjectString As String, result As MatchCollection)
Set myRegExp = New RegExp
myRegExp.MultiLine = True
myRegExp.Global = True
myRegExp.pattern = pattern
Set result = myRegExp.Execute(Trim$(SubjectString))
End Function

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 。。。的方式,这种方法既准确有快速!

摘自:网络整理

 
 

相关参考

VB SendMessage向其他程序窗口发送字符串消息实例

VB 二进制数组与十六进制字符串相互转换

VB 汉字字符串转换成拼音

VB查找替代字符串的函数

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

vb 字符串转为数字和判断字符串是否是数字字符串【转】

查找替代字符串的函数

VB中使用MD5算法

VBMD5加密模块

加密算法-MD5算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值