目前这个章节统计字数的宏只能统计第[0-9]章的内容,有没有能够计算10以上章节的字数

目前试用了一个宏,可以统计章节字数,但是没有办法统计第10章以上的章节

试了一个方法就是把 "第[0-9]@章*" 改成 "第[0-9]{1,}章"

也没有用

function 一键统计章节字数(){

// 获取当前文档、光标选区

let doc = Application.ActiveDocument;

let sel = Application.Selection;

let startRng = sel.Range.Duplicate;

// 向上查找本章「第X章」标题

startRng.Find.ClearFormatting();

startRng.Find.Text = "第[0-9]@章*";

startRng.Find.MatchWildcards = true;

startRng.Find.Wrap = 1; // wdFindStop = 1

startRng.Find.Execute(false,false,false,false,false,false,true);

let chapStart = startRng.End;

// 向下查找下一章标题

let endRng = startRng.Duplicate;

endRng.Collapse(1); // wdCollapseEnd = 1

endRng.Find.ClearFormatting();

endRng.Find.Text = "第[0-9]@章*";

endRng.Find.MatchWildcards = true;

endRng.Find.Wrap = 1;

let findNext = endRng.Find.Execute();

// 兜底最后一章:无下一章则到文档末尾

let chapEnd = findNext ? endRng.Start : doc.Content.End;

// 提取整章文本

let chapRange = doc.Range(chapStart, chapEnd);

let txt = chapRange.Text;

// 计算两种字数口径

let 全字符 = txt.length;

let 纯文字 = txt.replace(/[\r\n\s]/g,"").length;

// 插入字数统计到标题下方(核心功能)

startRng.Collapse(1);

startRng.InsertAfter("\r\n章节字数统计:纯文字 " + 纯文字 + " 字,总字符 " + 全字符 + " 个\r\n");

// 兼容Mac WPS的弹窗写法(彻底解决undefined报错)

alert(" 统计完成!\n纯文字字数:" + 纯文字 + "\n总字符数:" + 全字符);

}

江苏省
浏览 50
收藏
2
分享
2 +1
2
+1
全部评论 2
 
wils
wils Lv.2 潜力创作者

Lv.2潜力创作者

Find.Wrap好像应该是0 查找startRng之前加一句 startRng.Find.Forward = false 之后加一句 startRng = startRng.Paragraphs.Item(1).Range 而且记得统计字数用的是这个方法,而不是length,length统计有问题的 ActiveDocument.Range().ComputeStatistics(5)
· 广东省
回复
wils
wilsLv.2 潜力创作者

Lv.2潜力创作者

回帖不能超过500字,所以截断了 let startRng = sel.Range.Duplicate; startRng.Find.ClearFormatting(); startRng.Find.Text = "第[0-9]@章*"; startRng.Find.MatchWildcards = true; startRng.Find.Forward = false; // ← 向上(朝文档开头)找 startRng.Find.Wrap = 0; // ← wdFindStop,不循环 if (!startRng.Find.Execute()) { alert("未找到章节标题"); return; } startRng = startRng.Paragraphs.Item(1).Range let chapStart = startRng.End; // 本章内容从标题末尾开始
· 广东省
回复