按键精灵_提取文字、数字、字母、符号的通用Function

测试文本 = "hello HELLO ★+_)(*&^%$#@! 987654321 翠翠"
只取汉字 = 文本提取(测试文本, 0)
只取数字 = 文本提取(测试文本, 1)
只取符号 = 文本提取(测试文本, 2)
只取字母 = 文本提取(测试文本, 3)
只取小写 = 文本提取(测试文本, 4)
只取大写 = 文本提取(测试文本, 5)
/*
MsgBox 只取汉字, 0, "只取汉字" //返回: 翠翠
MsgBox 只取数字, 0, "只取数字" //返回: 123456
MsgBox 只取符号, 0, "只取符号" //返回: ★+_)(*&^%$#@!
MsgBox 只取小写, 0, "只取小写" //返回: hello
MsgBox 只取大写, 0, "只取大写" //返回: HELLO
*/

/*
提取符合条件的文本
源文本[文本型]: 需要处理的文本
筛选方式: 可选择默认设置或自定义正则
0=只取汉字 1=只取数字 2=只取符号 
3=只取字母(大小写) 4=只取小写字母 5=只取大写字母 
可自定义正则 如: "\u4e00-\u9fa5" 提取所有中文

中文编码范围,中文汉字的正则也许用的着。
双字节字符编码范围:
一、 GBK (GB2312/GB18030)
\x00-\xff       →GBK双字节编码范围
\x20-\x7f       →ASCII
\xa1-\xff  中文 →gb2312 取出所有中文
\x80-\xff  中文 →gbk  取出所有中文

二、 UTF-8 (Unicode)
\u4e00-\u9fa5   →(中文)  取出所有中文
\x3130-\x318F   →(韩文)  取出所有韩文
\xAC00-\xD7A3   →(韩文)  取出所有韩文
\u0800-\u4e00   →(日文)  取出所有日文
*/

Function 文本提取(源文本, 筛选方式)
    Dim Matches, Match, TmpTxt, TmpPattern
    //正则表达式
    Set TmpRegEx = New RegExp
    TmpRegEx.IgnoreCase = False
    TmpRegEx.Multiline = True
    Execute "TmpRegEx.Global = " & True
    If IsNumeric(筛选方式) Then 
        If 筛选方式 = 1 Then 
            TmpPattern = "[0-9]"
        ElseIf 筛选方式 = 2 Then 
            TmpPattern = "[^0-9a-zA-Z\u4e00-\u9fa5]"
        ElseIf 筛选方式 = 3 Then 
            TmpPattern = "[a-zA-Z]"
        ElseIf 筛选方式 = 4 Then 
            TmpPattern = "[a-z]"
        ElseIf 筛选方式 = 5 Then 
            TmpPattern = "[A-Z]"
        Else 
            TmpPattern = "[^\x20-\x7f]"
        End If
    Else 
        TmpPattern = 筛选方式
    End If
    TmpRegEx.Pattern = TmpPattern
    Set Matches = TmpRegEx.Execute(源文本)
    //获取结果
    For Each Match In Matches
        TmpTxt = TmpTxt & Match
    Next
    //输出并释放对象
    Set TmpRegEx = Nothing
    Set Matches = Nothing
    文本提取 = TmpTxt
End Function

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值