最长词查询

把一段文本粘进来,页面按你选的口径切词,给出词数、最长词长度,并把所有同长度的并列词一次列全。中文没有天然空格,本页把分词口径做成显式选项并写进结果,避免「同一段中文算出好几个答案」的误会。默认已经填好一句英文样例,打开就有结果。

默认已直出英文样例;清空后想恢复点「载入示例」。中文请在词间自行加空格,或切换字符模式。
口径会回显在结果第一行,复现时务必一致。
低于门槛的词不参与最长词评选;按 Enter 重算。
只截断显示,不改变并列总个数;按 Enter 重算。
词(片段)总数0
最长词长度0
并列词个数0
达标词数0
去分隔符字符数0

提示:两个数字框按 Enter,多行文本框按 Ctrl/Cmd + Enter;结果区带 role="alert"。

16 段样例对照表(词数/最长词长/并列词均由脚本实算)

样例节选切分口径词数最长词长度并列最长词

同一段中文在两种口径下的词数会差很多,表里后三列不是抄来的静态值,而是脚本逐段调用同一个切词函数算出来的。

使用方法

  1. 在中间的大文本框里粘贴或输入待查文本。它默认已经直出一句英文样例「The quick brown fox jumps over the lazy dog」,打开页面就能看到词数、最长词长度与并列词;清空后想恢复点「载入示例」。
  2. 用下拉框选切分口径:默认是「按空白/标点切分」,适合英文这类自带空格的语言;「按字符模式(中文逐字)」把每个非分隔符的 Unicode 字符单独当成一个词,专门用来演示中文无空格时该怎么算。
  3. 两个数字框分别是最小词长门槛与最多列出并列词个数,都写了 min、max、step。改完任意一个直接按 Enter 重算;大文本框因为要换行,约定 Ctrl/Cmd + Enter 触发,避免敲回车就误刷新。
  4. 结果区带 role="alert":五张卡片给出词数、最长词长度、并列词个数、达标词数与去分隔符字符总数,下面 <pre> 逐行打印口径、并列词清单和全部词序列。
  5. 点「复制结果」取走快照;「导出对照表 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。

结果边界与舍入规则

常见问题

为什么中文整句只算成 1 段或 2 段?

因为中文书写不在词之间加空格,本页默认口径只能拿空白和标点当边界。一句里若只有一个空格,就只切出两段;一个空格都没有时整句算一段。这不是 bug,请自行在词间加空格,或切到字符模式按单字统计。

按字符模式到底有什么用?

它把每个非分隔符的 Unicode 字符当成一个词,让中文不再被挤成一大段。代价是最长词长度通常变成 1、并列字符一大串,所以它更像一个「口径演示」与单字计数工具,而不是找长词的工具。

同长度并列为什么必须全列出?

默认英文样例里长度 5 的词有 quick、brown、jumps 三个,只报第一个会让人误判。中文段落被切成长片段时并列更容易出现,全列出才能看清「到底有几个词一样长」,去重后按出现顺序给。

连字符单词算一个还是两个?

按本页口径算两个:连字符在分隔符集合里,well-known 会切成 well 与 known。若你的场景要把连字符词当整词,需要另立口径;本页如实按切分结果计数,并把它写进对照表样例里方便核对。

长度是字符数还是像素宽度?

是字符个数,汉字与拉丁字母都各计 1。屏幕上一个汉字大约顶两个拉丁字母宽,但那是排版与截断要操心的事,和本页比「词有多少字符」不是同一个量,不要混用。

最小词长门槛设大了会怎样?

若门槛超过文本里最长的词,脚本会报「没有任何词达标」并回显当前最长长度,让你调小门槛,而不是返回空清单。设成 1 表示所有词都参与评选,这也是默认值。

同一个词出现多次会列几次?

并列清单按出现顺序收集后去重,同一个词只列一次,避免 apple、apple、apple 把清单刷屏。词数、达标词数仍按实际出现次数统计,去重只作用在并列清单上。

粘贴的文本会上传吗?

不会。全流程只有字符串切分、长度比较和拼接,没有网络请求、没有表单提交、没有第三方脚本,也不写 Cookie 或 localStorage。关掉标签页,文本随页面一起消失。

相关工具