[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 3# xp3000


    给一个测试样本,具体说明需要修改成什么样子

TOP

本帖最后由 apang 于 2014-7-8 14:14 编辑
  1. Dim str, fso, file, f, txt
  2. str = "零一二三四五六七八九十百千"
  3. Set fso = CreateObject("Scripting.FileSystemObject")
  4. For Each file in fso.GetFolder(".").Files
  5.     If LCase(Right(file, 4)) = ".txt" Then
  6.         Set f = fso.OpenTextFile(file, 1)
  7.         txt = f.ReadAll
  8.         f.Close : Set f = Nothing
  9.         fso.OpenTextFile(file, 2).Write RegEx(txt)
  10.     End If
  11. Next
  12. Set fso = Nothing
  13. MsgBox "OK"
  14. Function RegEx(txt)
  15.     Dim re, s, i, s1, ss
  16.     Set re = New RegExp
  17.     re.Pattern = "(第)([" & str & "]+)(节)"
  18.     If Not re.Test(txt) Then RegEx = txt : Exit Function
  19.     s = re.Execute(txt)(0).SubMatches(1)
  20.     If Left(s, 1) = "十" Then s = "一" & s
  21.     For i = 1 to Len(s)
  22.         s1 = Mid(s, i, 1)
  23.         If InStr(str, s1) > 10 Then
  24.             ss = ss & "*10^" & (InStr(str, s1)-10) & "+"
  25.         Else ss = ss & (InStr(str, s1)-1)
  26.         End If
  27.     Next
  28.     s = Right("0000" & eval(ss & "+0"), 4)
  29.     RegEx = re.Replace(txt, "$1" & s & "$3")
  30. End Function
复制代码
第2个,把function部分换成:
  1. Function RegEx(txt)
  2.     Dim re, s
  3.     Set re = New RegExp
  4.     re.Pattern = "【(\d+)】"
  5.     If Not re.Test(txt) Then RegEx = txt : Exit Function
  6.     s = re.Execute(txt)(0).SubMatches(0)
  7.     s = Right("0000" & s, 4)
  8.     RegEx = re.Replace(txt, "第" & s & "节")
  9. End Function
复制代码

TOP

回复 7# xp3000


    第19行:
  1. re.Pattern = "(第)([" & str & "两]+)(节)"
复制代码
第21行:
  1. s = re.Execute(txt)(0).SubMatches(1) : s = Replace(s, "两", "二")
复制代码
话说测试样本中没见到“两”字
108 可以叫 一百单八,可以叫 百又八,可以叫 一百零八,等
总之中文数字叫法很多,如果要求代码兼容所有叫法,估计有难度,具体问题具体分析吧
1

评分人数

TOP

返回列表