[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 WHY 于 2017-6-28 13:51 编辑

“第十五章节哀顺变”中的“节”给误删掉了,改下
  1. @if (0)==(0) echo off
  2. dir /b *.txt | cscript //nologo //e:jscript "%~f0"
  3. pause & goto :EOF
  4. @end
  5. var str = '零一二三四五六七八九';
  6. var obj = {};
  7. for(var i=0; i<10; i++) obj[str.charAt(i)] = '+' + i;
  8. obj['〇'] = '+0'; obj['两'] = '+2'; obj['廿'] = '+20';
  9. obj['十'] = '*10'; obj['百'] = '*100'; obj['千'] = '*1000';
  10. var fso = new ActiveXObject('Scripting.FileSystemObject');
  11. var arr = WSH.StdIn.ReadAll().split('\r\n'), len = arr.length - 1;
  12. for(var i=0; i<len; i++){
  13.     var objFile = fso.OpenTextFile(arr[i]);
  14.     var txt = objFile.ReadAll() + '\r\n';
  15.     objFile.Close();
  16.     txt = txt.replace(/^[  ]*\r\n/gm, '');     //删除空白行
  17.     var m = txt.split('\r\n');
  18.     m[0] = convertToNumber(m[0]);                     //转换第一行数字
  19.     var objFile = fso.OpenTextFile(arr[i], 2);
  20.     objFile.Write(m.join('\r\n'));        //重新写入文本
  21.     objFile.Close();
  22.     if(!fso.FileExists(m[0] + '.txt'))fso.GetFile(arr[i]).Name = m[0] + '.txt' //重命名
  23. }
  24. function convertToNumber(s){
  25.     return s.replace(
  26.         /^[\s ]*第([零〇一二三四五六七八九两廿十百千]+)章(?:节|[\s ]*([^\s ]*))[\s ]*$/,
  27.         function(s0, s1, s2){
  28.             s1 = s1.replace(/./g, function(s0){return obj[s0]}); //转换数字
  29.             s1 = s1.replace(/^[*+]/, '');                        //删除字符串开头的*或+
  30.             s1 = (10000 + eval(s1) + '').substr(1);              //补零
  31.             return '第' + s1 + '章' + (s2 ? ' ' + s2 : '')
  32.         }
  33.     )
  34. }
复制代码
2

评分人数

TOP

  1. Dim str, fso, file, f, txt, m
  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 + vbCrLf
  8.         f.Close
  9.         txt = DelBlankLine(txt)         '删除空白行
  10.         m = Split(txt, vbCrLf)
  11.         m(0) = ConvertToNumber(m(0))    '转换第一行数字
  12.         Set f = fso.OpenTextFile(file, 2)
  13.         f.Write Join(m, vbCrLf)         '重新写入文本
  14.         f.Close : Set f = Nothing
  15.         Rem 重命名
  16.         If Not fso.FileExists(m(0) + ".txt") Then fso.GetFile(file).Name = m(0) + ".txt"
  17.     End If
  18. Next
  19. Set fso = Nothing
  20. MsgBox "OK"
  21. function DelBlankLine(s)
  22.     Dim reg
  23.     Set reg = New RegExp
  24.     reg.Pattern = "^[  ]*\r\n"
  25.     reg.Global = True
  26.     reg.MultiLine = True
  27.     DelBlankLine = reg.Replace(s, "")
  28. End function
  29. Function ConvertToNumber(s)
  30.     Dim re, s1, s2, i, chr, ss
  31.     Set re = New RegExp
  32.     re.Pattern = "^[\s ]*第([" & str & "〇两廿]+)章(?:节|[\s ]*([^\s ]*))[\s ]*$"
  33.     If Not re.Test(s) Then ConvertToNumber = s : Exit Function
  34.     s1 = re.Execute(s)(0).SubMatches(0)
  35.     s2 = re.Execute(s)(0).SubMatches(1)
  36.     s1 = Replace(s1, "〇", "零") : s1 = Replace(s1, "两", "二") : s1 = Replace(s1, "廿", "二十")
  37.     If Left(s1, 1) = "十" Then s1 = "一" & s1
  38.     For i = 1 to Len(s1)
  39.         chr = Mid(s1, i, 1)
  40.         If InStr(str, chr) > 10 Then
  41.             ss = ss & "*10^" & (InStr(str, chr)-10) & "+"
  42.         Else
  43.             ss = ss & (InStr(str, chr)-1)
  44.         End If
  45.     Next
  46.     s1 = Right("0000" & eval(ss & "+0"), 4)
  47.     If s2 <> "" Then s2 = " " + s2
  48.     ConvertToNumber = "第" + s1 + "章" + s2
  49. End Function
复制代码
1

评分人数

TOP

返回列表