分享

Like不Like?

 L罗乐 2017-07-06

之前我们讲了字符串处理。链接在这里:常用字符串处理函数

除了上面讲的以外,我们日常字符串处理中还经常见的是字符串的比较。

举个最简单的例子,给你一些费用清单,里面包含了各种费用,例如住宿费,交通费,餐饮费。如果要对费用进行归类,把住宿和交通费都继续归类为A类,餐饮归类为B类,我们应该怎么做呢?

直男的逻辑很简单,如果费用的名称里包括住宿和交通,我们就归类为A,如果包括餐饮,就归类为B。这里我们先不考虑各种复杂的情况,例如费用明细中既包括住宿,又包括餐饮。

这里就涉及到了字符串的比较。A哥粗浅的认为,字符串比较和多工作表汇总是日常办公中最实用的两项技术。

那么如何比较字符串呢?我们今天先讲解用Like操作符来比较。

Like的定义

Like用于确定一个字符串(string)是否符合某种格式(pattern)。使用方法是: string Like pattern
例如:住宿费(string)是可以匹配某某费(pattern)
当然,我们之前使用excel自带的高级搜索时可以使用的通配符在pattern中也是可以使用的。详细的通配符可以在msdn上查找到
https://msdn.microsoft.com/VBA/Language-Reference-VBA/articles/like-operator

通配符用于匹配
?单个字符
*****0个或多个字符
#单个数字(0-9)
[ charlist ]任意单个字符集中的字符
[ !charlist ]任意单个不在字符集中的字符

 

  • 使用Like将字符串与格式进行匹配之后,返回的是一个布尔逻辑值。如果匹配,那么就返回True,否则返回False

  • 另外,Like字符串匹配默认是区分大小写的

使用举例

Sub test()    Debug.Print 'a' Like '[a]' '    返回True,使用[]来限定单个字符或者数字的内容,这里限定了是a,所以匹配    Debug.Print 'ab' Like '[a]' '    返回False,因为[]只能匹配单个,而ab是两个字符了    Debug.Print 'ac' Like '[a-b][a-c]' '    返回True,在括号中使用-来指定范围。例如这里,a-b是指定从a到b    Debug.Print 'd' Like '[a-ej-z]' '    返回True,多个范围的指定只需要把范围写到一起就可以    Debug.Print 'f' Like '[a-ej-z]' '    返回False,f并不在指定的多个范围内    Debug.Print 'a1' Like '[a]#' '    返回True,用#来指定单个数字    Debug.Print 'a*' Like '[a][*]' '    返回True,特殊字符的匹配需要外加[] End Sub

大家可能发现了,使用Like的确是可以简单快速把字符串与格式进行匹配,但是,如果对于一些复杂的字符串匹配,Like就显得无能为力了。
比方说,我要对电话号码进行匹配,匹配格式为 区号-固话号。但是,区号可能是3-4位,固话号可能是7-8位,使用Like就很难直接实现了。
那怎么处理这种问题呢?一个更加好的解决方法是使用正则(Regular Expression)。这个就不仅仅是一堂课就能讲完了,我们后面会慢慢学习这个部分。

总结

  • Like运算符的使用



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多