分享

字符提取

 眉坞老农 2023-10-20 发布于陕西

 //还有一种... 我看个大佬写的...
//人家的比较厉害一些......
测试文本 = "~G我1a!H是2b@I3c#J老4d$K农5e%L6f&"
只取汉字 = 文本提取(测试文本, 0)
只取数字 = 文本提取(测试文本, 1)
只取符号 = 文本提取(测试文本, 2)
只取字母 = 文本提取(测试文本, 3)
只取小写 = 文本提取(测试文本, 4)
只取大写 = 文本提取(测试文本, 5)
MsgBox 只取汉字, 0, "只取汉字" //返回: 我是老农
MsgBox 只取数字, 0, "只取数字" //返回: 123456
MsgBox 只取符号, 0, "只取符号" //返回: ~!@#$%&
MsgBox 只取小写, 0, "只取小写" //返回: abcdef
MsgBox 只取大写, 0, "只取大写" //返回: GHIJKL
//-------------------------------
//提取符合条件的文本
//源文本[文本型]: 需要处理的文本
//筛选方式: 可选择默认设置或自定义正则
//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

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多