应坛友 1314233 发布的 txt汉字章节批量替换为阿拉伯数字章节,
为实现类似下面的小说章节
第一章 我爱你
正文
第二章 他爱你
正文
第三章 你爱他
正文
...
...
第两万一千八百二十六章 你爱他他不爱她他爱她
正文
把文字章节转换成阿拉伯数字章节
第1章 我爱你
正文
第2章 他爱你
正文
第3章 你爱他
正文
...
...
第21826章 你爱他他不爱她他爱她
正文
本人用小众脚本软件autoit做了一个简单的处理程序,
网友想学习其中的代码,故开源在此,给大家提供一种普通的思路。
#TextNovelChineseNumberToArabic 源码分享
#主要使用了正则替换和普通替换。
#大量替换直接枚举,没有加循环,更便于大家学习吧
$s=""
$file=FileOpenDialog("选择小说文本文件", @ScriptDir, "文本文件 (*.txt)|全部 (*.*)" )
$txt=FileRead($file)
$a=StringRegExp($txt, "第([一两二三四五六七八九十零〇百佰千仟万萬]+)章", 3)
If Not @Error Then
For $i=0 to UBound($a)-1
$s=$a[$i]
if StringLeft($s, 1)="十" Then $s= "1" & StringMid($s, 2)
$s=StringRegExpReplace($a[$i], "^十", "")
$s=StringReplace($s, "十", "")
$s=StringReplace($s, "百", "")
$s=StringReplace($s, "佰", "")
$s=StringReplace($s, "千", "")
$s=StringReplace($s, "仟", "")
$s=StringReplace($s, "万", "")
$s=StringReplace($s, "萬", "")
$s=StringReplace($s, "一", 1)
$s=StringReplace($s, "两", 2)
$s=StringReplace($s, "二", 2)
$s=StringReplace($s, "三", 3)
$s=StringReplace($s, "四", 4)
$s=StringReplace($s, "五", 5)
$s=StringReplace($s, "六", 6)
$s=StringReplace($s, "七", 7)
$s=StringReplace($s, "八", 8)
$s=StringReplace($s, "九", 9)
$s=StringReplace($s, "零", 0)
$s=StringReplace($s, "〇", 0)
ConsoleWrite($s & @LF)
$txt=StringReplace($txt, "第" & $a[$i] & "章", "第" & $s & "章")
Next
EndIf
If $s<>"" Then
$newfile=StringReplace($file, ".", "_new.",-1)
$fid=FileOpen($newfile, 2+8)
FileWrite($fid , $txt)
FileClose($fid)
Msgbox(8192+64, "提示", "文本小说处理完毕,请自行检查" & @CRLF & "后缀_new在源文件目录处",3 )
Else
Msgbox(8192+48, "提示", "文本小说未发现需要处理的中文数字", 3)
EndIf
#TextNovelChineseNumberToArabic 源码结束
完整代码与软件见 https://wwm.lanzout.com/iY0jf0gqpsfg (v1.0)
根据坛友提出的bug,只好不偷懒的用十进制逐渐累加
v1.2 直接放进压缩包内,大家可以再测试。 https://wwm.lanzout.com/iYfaR0gw74af