👨‍👩‍👧‍👦前端若何精准的计算字数?

刚刚阅读1回复0
kanwenda
kanwenda
  • 管理员
  • 注册排名1
  • 经验值179300
  • 级别管理员
  • 主题35860
  • 回复0
楼主

前段时间始末在chan和提早规划上写诗,提早规划接纳的是markdownGUI,chan写诗顶用的是富图形界面器。对完全不异的文本,常常在chan上早已写了几百字,黏贴到提早规划上多于两千不出,提早规划上对英语字符串三个单字算是三个字。

好比说那首诗提早规划上表白575字,chan上有1850字。

接下去他们瞧瞧在后端如何切确的排序页数。

假定,他们把三个英文简化字和三个英语字符串都算是三个字。好比;

"五个字" = 3 "three" = 5 接纳 String.length

length特征则暗示三个字符串串的宽度,能回到字符串标识符模块的数目。JavaScript接纳UTF-16的标识符,此标识符接纳三个 16 BCC的标识符模块来则暗示绝大部门常用的字符串,接纳三个标识符模块则暗示不常用的字符串。因而 length 回到值可能将与字符串串中前述的字符串数目不完全不异。

var x = "Mozilla"; console.log("Mozilla 是" + x.length + "个字"); //Mozilla 是7个字 var z = "三五个字"; console.log( z.length); //4

接下去他们看许多特定的情形:

var y = " "; console.log( y.length); //2

三个非常常用的emoji眼妙算是2个字,你能猜呵呵 ‍ ‍ ‍ 算几个字?

var z = " ‍ ‍ ‍ "; console.log( z.length); //11

要说,11个字所以多,原因在于阿谁眼神是由五个塞雷县 、 、 、 堆叠而成的,他们能透过for轮回式将 ‍ ‍ ‍ 降解。

for (const codePoint of ‍ ‍ ‍ ) { console.log(%o, codePoint) } //=> //=> ‍ //=> //=> ‍ //=> //=> ‍ //=>

出格留意:

空字符串串的 length 为 0。String.length 回到 1。接纳[...""].length

假设接纳将字符串串转成三个字符串,得出结论的结论和下面其实不完全不异。

console.log( [..." ‍ ‍ ‍ "]);// [ , ‍, , ‍, , ‍, ] console.log( [..." ‍ ‍ ‍ "].length);// 7 console.log( [..." "].length);// 1 接纳 Intl.Segmenter

除此之外一类在 JavaScript 中排序字符串数的体例是接纳 Intl.Segmenter。

Intl.Segmenter 是一类 API,能考虑到词汇天然情况,将字符串串降解为字素、单字和语句。

const segmenter = new Intl.Segmenter("zh", { granularity: "grapheme" }); console.log([...segmenter.segment(" ")].length); // 1 const segmenter = new Intl.Segmenter("zh", { granularity: "grapheme" }); console.log([...segmenter.segment(" ‍ ‍ ‍ ")].length); // 1

能看见,下面眼神的length多于1,那也更符合他们的排序市场需求。

归纳:文本string.length[...string].lengthIntl.Segmenter五个字333three555211 ‍ ‍ ‍ 1171

0
回帖 返回游戏

👨‍👩‍👧‍👦前端若何精准的计算字数? 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息