使用方法
- 在中间的大文本框里粘贴或输入待查文本。它默认已经直出一句英文样例「The quick brown fox jumps over the lazy dog」,打开页面就能看到词数、最长词长度与并列词;清空后想恢复点「载入示例」。
- 用下拉框选切分口径:默认是「按空白/标点切分」,适合英文这类自带空格的语言;「按字符模式(中文逐字)」把每个非分隔符的 Unicode 字符单独当成一个词,专门用来演示中文无空格时该怎么算。
- 两个数字框分别是最小词长门槛与最多列出并列词个数,都写了 min、max、step。改完任意一个直接按 Enter 重算;大文本框因为要换行,约定 Ctrl/Cmd + Enter 触发,避免敲回车就误刷新。
- 结果区带 role="alert":五张卡片给出词数、最长词长度、并列词个数、达标词数与去分隔符字符总数,下面
<pre>逐行打印口径、并列词清单和全部词序列。 - 点「复制结果」取走快照;「导出对照表 CSV」下载带 BOM 的表格;「复制对照表 TSV」把 16 行样例按制表符复制。对照表默认只显示 12 行,点「加载更多」展开其余 4 行。
整段处理只在当前页面完成,不发起网络请求、不写 Cookie、不碰 localStorage,文本不会被上传到任何地方。
这个工具能解决什么问题
第一,给「一段文本里最长的词是哪个」一个可复核的答案。排版、字号适配、英文教学、输入框宽度评估都常需要这个量;本页不只给长度,还把同长度并列的所有词按出现顺序列出来,避免只报第一个就让人误以为它是唯一答案。
第二,把「词」的定义摆到台面上。同一段中文,按空白切、按标点切、按字符切,会得到完全不同的词数;不说明口径就没法比较结果。本页把口径做成显式下拉框,并在结果第一行回显当前用的是哪一种,任何人复现都能对上。
第三,让纯标点或全是空白的输入得到明确报错,而不是悄悄回一个「最长词为空」。空文本、只有标点、门槛设得比所有词都高,三条路径各有一条指名原因的提示,方便你立刻分清是数据问题还是设置问题。
需要顺带澄清一个历史遗留:本页在 tools.json 里的原始条目名是「Longest词查询」,其中 Longest 是没译完的机翻残留,读起来半英半中;正文一律使用「最长词查询」这一正确术语,也不沿用旧占位脚本里那套把编码、反转、大小写、词数统计混在一起的通用处理逻辑。本页只做一件事:切词、比长度、列并列。
计算原理与切分口径
按空白/标点切分:把连续的分隔符当成边界,用 text.split(SEP_G) 切出非空片段,每个片段算一个词。分隔符集合包括半角与全角空白、逗号句号、中英文问叹号、顿号分号、引号、括号、方括号、破折号与省略号等;连字符也在其中,所以 well-known 会被切成 well 与 known 两段,这一点与「把连字符词当整词」的口径不同,使用时要注意。
按字符模式:先按同一套边界切掉分隔符,再把剩下的每个 Unicode 字符单独当成一个词;脚本对 UTF-16 代理对做了合并处理,一个 Emoji 算一个字符而不是两个码元。此时每个词的字符长度通常都是 1,于是「最长词」往往是一大串并列字符,正好用来演示中文整句在字符口径下是什么样。
最长长度与并列。先按最小词长门槛过滤出候选词,取候选里最大的字符长度,再把所有达到该长度的词按出现顺序收集并去重,得到并列清单;清单最多显示「最多列出并列词个数」设定的个数,超出部分会明确标注还有几个没显示,不会假装只有那么几个。
本页真正要讲透的是:中文没有空格,分词口径决定答案。英文、德文这类语言天然用空格把词隔开,按空白切基本就等于按词切;现代汉语却把词连成一串,只有标点会断开,所以「柳泉工具 免费在线计算器合集」按空白/标点切分只能得到 2 段,整句里十几个汉字被挤进这两段里,最长词长度会大得离谱,词数却又小得离谱。这不是脚本算错,而是「词」这个单位在中文里本来就没有书写边界。因此本页在结果区显式回显口径,并给出两条可操作的建议:要么在中文词之间自行加空格再切,要么切到字符模式按单个汉字统计。任何不说明口径就直接报「最长词」的做法,对中文都是不可靠的;同长度并列必须全列出,也是为了避免中文长段被误判成只有一个「最长词」。
另外,这里的「长度」一律指字符个数而非显示宽度:一个汉字计 1 个字符,一个拉丁字母也计 1 个字符,二者在屏幕上的宽度差得很多,但那是排版问题,不属于本页的长度口径。
完整示例(默认输入实算)
默认英文样例是「The quick brown fox jumps over the lazy dog」。在按空白/标点切分口径下,页面脚本实算得:词数 = …,最长词长度 = … 个字符,该长度的并列词 = …。这三个数都由本页的切词与比长函数算出,源码里没有写死结果。
把文本换成中文样例「柳泉工具 免费在线计算器合集」:同样口径下脚本实算得到词(段)数 = …,也就是说整句被空格挤成了 2 段,而不是十几个词。这正是上一段讲的口径差异在数字上的体现;把下拉框切到字符模式再看同一句,结果会完全不同。
上方 <pre> 会把全部词按出现顺序列出来,并在并列清单末尾标出被「最多列出」截断的个数;改最小词长门槛就能看到候选集怎么缩小,改下拉框就能看到同一段中文在两种口径下的词数差多少。
对照表怎么读
工具区下方那张表由脚本对 16 段样例文本逐段调用同一个切词函数生成:列是样例节选、切分口径、词数、最长词长度、并列最长词,后三列全是算出来的。样例里特意混了纯英文句、中英混排、中文带空格、中文无空格、纯标点长串、超长单词、重复词等,就是让口径差异在并排数字里看得见。默认显示 12 行,点「加载更多」再展开 4 行。
「导出对照表 CSV」给带 BOM 的文件,「复制对照表 TSV」给制表符文本,两者都包含展开后的全部行。读表时建议横着比同一段文本在两种口径下的词数,再看最长词长度怎么变;你会发现中文段的「最长词长度」在按空白切分时往往虚高,切到字符模式后回到 1。
结果边界与舍入规则
- 空文本。文本框为空会中止并提示恢复样例,不会把空文本算成「0 个词、最长词为空」后静默显示。
- 只有空白或标点。切完没有任何词时,会报「按当前口径没有切出任何词」并建议换文本或切模式;不会返回 0 长度当作答案。
- 门槛高于所有词。最小词长门槛若超过文本里最长的词,会报「没有词达标」并回显当前最长长度,请调小门槛;脚本不返回空清单冒充结果。
- 并列清单截断。「最多列出并列词个数」只影响显示,结果区会写明「还有 N 个未显示」;并列总个数照实统计,不因截断而变少。
- 非法数字框。两个数字框为空、非数字、越界或带小数各有具体提示,指名是哪个框、当前值是多少,不会用「取不到就当 1」的方式兜底。
- 字符与码元。长度按字符个数计:汉字、拉丁字母各算 1;Emoji 与补充平面汉字按代理对合并为 1 个字符计入。按字符模式时这一点尤其重要,否则一个表情会被错拆成两半。
- 不四舍五入。词数、长度、并列个数都是整数计数,没有小数可舍;超长文本只做一次线性扫描,数万字内瞬间完成,不限制输入长度也不截断结果。
- 本地性。只有字符串切分、比较与拼接,没有 fetch、没有表单提交、没有第三方脚本,也不写 Cookie 或 localStorage。
常见问题
为什么中文整句只算成 1 段或 2 段?
因为中文书写不在词之间加空格,本页默认口径只能拿空白和标点当边界。一句里若只有一个空格,就只切出两段;一个空格都没有时整句算一段。这不是 bug,请自行在词间加空格,或切到字符模式按单字统计。
按字符模式到底有什么用?
它把每个非分隔符的 Unicode 字符当成一个词,让中文不再被挤成一大段。代价是最长词长度通常变成 1、并列字符一大串,所以它更像一个「口径演示」与单字计数工具,而不是找长词的工具。
同长度并列为什么必须全列出?
默认英文样例里长度 5 的词有 quick、brown、jumps 三个,只报第一个会让人误判。中文段落被切成长片段时并列更容易出现,全列出才能看清「到底有几个词一样长」,去重后按出现顺序给。
连字符单词算一个还是两个?
按本页口径算两个:连字符在分隔符集合里,well-known 会切成 well 与 known。若你的场景要把连字符词当整词,需要另立口径;本页如实按切分结果计数,并把它写进对照表样例里方便核对。
长度是字符数还是像素宽度?
是字符个数,汉字与拉丁字母都各计 1。屏幕上一个汉字大约顶两个拉丁字母宽,但那是排版与截断要操心的事,和本页比「词有多少字符」不是同一个量,不要混用。
最小词长门槛设大了会怎样?
若门槛超过文本里最长的词,脚本会报「没有任何词达标」并回显当前最长长度,让你调小门槛,而不是返回空清单。设成 1 表示所有词都参与评选,这也是默认值。
同一个词出现多次会列几次?
并列清单按出现顺序收集后去重,同一个词只列一次,避免 apple、apple、apple 把清单刷屏。词数、达标词数仍按实际出现次数统计,去重只作用在并列清单上。
粘贴的文本会上传吗?
不会。全流程只有字符串切分、长度比较和拼接,没有网络请求、没有表单提交、没有第三方脚本,也不写 Cookie 或 localStorage。关掉标签页,文本随页面一起消失。
相关工具
- 字数统计工具:先按字符、汉字、英文词三种口径统计总量,再回到本页查最长词。
- 删除多余空格:中文词之间需要人工加空格时,先用它把多余空白清理干净,切词结果更稳。
- base64编码工具:把切好的词表编码成文本便于存档,注意它只做编码,不改变分词口径。