ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何用正则将字符串变成多行字符递增样式?

如何用正则将字符串变成多行字符递增样式?

作者:绿色风 分类: 时间:2022-08-17 浏览:89
楼主
kevinchengcw
Q: 如何用正则将字符串变成多行字符递增样式?
A: 以下代码可以将一个长长的字符串变成多行字符递增样式,代码如下:
  1. Sub test()
  2. Dim Str As String
  3. Dim M, N, i As Integer
  4. Dim RegEx
  5. Set RegEx = CreateObject("vbscript.regexp")  '创建正则项目
  6. Str = "jkdajkldjsalk;dsjf;dlsajfkldsjagkhdsugioerupotiewqr-[ewi-0rt9e-0w9-0tiewpigposjkgl;dsjkl;gjdfkl;sjgl;dsjkl;gk;ldskg;dksfk;ld"  '设定要处理的字符串
  7. For N = 1 To Len(Str)  '循环字符串(这样只是为了保证要循环到全部,虽然中途就已经完成了处理,但其实并不好确定循环几次完成)
  8. M = M + N + 1   '累加已处理完成的字符个数,加1是因为我们会加上一个换行符
  9. If M > Len(Str) Then Exit For  '如果超过了字符串个数,则退出循环
  10. With RegEx
  11.     .Global = False '虽然这句不加即默认为false,但本程序为了清楚表达要传达的意思,故加上这句,即只匹配一次就结束匹配过程,如果是true则匹配全程
  12.     .MultiLine = True  '设定正则表达式可以处理多行的情况
  13.     If N = 1 Then  '判断是否是第一次执行,因为第一次没有换行符存在,故与其他次会不同
  14.         .Pattern = "(.{" & N & "})"
  15.     Else
  16.         .Pattern = "\n(.{" & N & "})"
  17.     End If
  18. End With
  19. Str = RegEx.Replace(Str, "$1" & vbNewLine)  '将匹配内容后面插入一个换行符
  20. Next N
  21. Set RegEx = Nothing  '清空项目
  22. MsgBox Str  '显示结果
  23. End Sub

以上主要是提醒两个方面:
1. Global在实际使用中的灵活运用;
2. MultiLine语句的酌情使用。
有时我们会遗忘掉这两个语句所形成的不同结果。
2楼
海洋之星
路过,还不知道正则是什么东东

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap