CorelDRAWX4的VBA插件开发(二十一)字符串搜索和正则表达式匹配以及文件名关键字处理

这一节想作的学习汇报主要想讲下关于字符串的处理,这个往往是我们在程序处理中的关键问题,因为所有的信息最终往往是以字符串的形式进行传达,所以,我们一定要掌握好字符串的处理. 而字符串的处理中,比较常见的就是使用正则表达式来处理了,这一节就从普通的搜索讲起,再讲到VB中的正则表达式,这里也是只做一个大概的示范,而正则表达式的使用也不是本节能够讲得清的,如果已经掌握的可以忽略, 如果有不了解的同学,可以去专门讲解正则表达式的地方进行学习

  • 首先我们先上图, 在工具页面新建一个框架和两个输入框以及两个按钮,然后把按钮的标题改成文本搜索正则搜索,而他们的名称后面,我们加上下划线_以及我们能看得懂的拼音字符wenBenSouSuo,保留前面的名称是因为是自动生成的,是程序中本来的名称而且带了编号很方便我们了解这个是第几个按钮了,而后面的拼音是为了让我们作者自己能直观的从这个名称上了解这个按钮的意义,所以还特意把每个文字的首字母进行大写处理,另一个也是同理.
    在这里插入图片描述
  • 然后分别双击这两个两个按钮进入按钮的点击事件

然后上代码:
在这里插入图片描述

Private Sub CommandButton4_wenBenSouSuo_Click()

    If ActiveDocument.FilePath <> "" Then
        FileName = ActiveDocument.Name
        If InStr(FileName, UserForm1.TextBox3.Value) > 0 Then
            MsgBox "文件名中含有" & Chr(34) & UserForm1.TextBox3.Value & Chr(34)
        Else
            MsgBox "文件名中不包含该内容"
        End If
    Else
        MsgBox "当前文件名不存在"
    End If
End Sub

Private Sub CommandButton5_zhenZeSouSuo_Click()
    If ActiveDocument.FilePath <> "" Then
        Dim objRegEx As Object, FileName As String
        FileName = ActiveDocument.Name
        Set objRegEx = CreateObject("vbscript.regexp")
        objRegEx.Pattern = ".*?(" & UserForm1.TextBox4.Value & ").*"
        objRegEx.Global = True
        Set objMH = objRegEx.Execute(FileName)
        If objMH.Count > 0 Then
            subm0 = objMH(0).submatches(0)
            Set objRegEx = Nothing
            MsgBox "当前匹配正则中的内容为" & subm0
        Else
            MsgBox "匹配失败"
        End If
    Else
        MsgBox "当前文件名不存在"
    End If
End Sub

演示:
在这里插入图片描述

代码浅释:
首先获取当前的文件名ActiveDocument.Name储存在FileName当中,然后判断一下文件名当中有没有输入框TextBox3的值Value,如果匹配到了的话,InStr会返回一个匹配的第一次的位置也就是下标,所以如果匹配上了一定是个正数,所以用了>0,未匹配上就是0

后面关于正则表达式
首先设置一下objRegEx为一个对象Object,然后让他Set objRegEx = CreateObject("vbscript.regexp"),让它赋值为一个新建的对象VB脚本(script就是脚本的意思)中的regexp(regexp就是正则的意思)
Pattern 是就是正则表达式的匹配式子储存的地方
Global 是全局匹配的意思,如果是true的话 当匹配上了第一个之后程序仍然会再搜索第二次
Execute是在某字符串里面执行正则搜索的函数功能, 后面的括号里面填上需要被搜索的字符串,因为带了括号,所以是有返回值的,所以用objMH 来储存这个对象,这个对象里面有两个属性,其中一个是Count 记录了匹配总数,所以我们就可以用来检测匹配成功与否,所以>0就是成功匹配
objMH(0)就是其中第一次正则匹配成功所储存的字符串
.submatches(0)就是正则表达式内的第一个括号内匹配的内容
Set objRegEx = Nothing 再把这个objRegEx 从内存中回收不占用内存空间

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值