跳到主要内容
澄清:代码点!=代码单位
来源 链接

请参见如何从字符串中获取字符数组?了解更多详细信息。

这里已经有很多很好的答案,所以我将只关注按字符拆分。

以下是一些方法的比较:https://stackblitz.com/edit/stackblitez-typescript-lrag9u?devToolsHeight=90&file=index.ts

使用以下测试字符串,由9个字符/15个码位/20个码单元组成:

在支持的浏览器中,Intl国际.分段器(在支持的浏览器中)

可编辑比较:https://stackblitz.com/edit/stackblitez-typescript-lrag9u?devToolsHeight=90&file=index.ts

这里已经有很多很好的答案,所以我将只关注按字符拆分。

以下是一些方法的比较:https://stackblitz.com/edit/stackblitez-typescript-lrag9u?devToolsHeight=90&file=index.ts

使用以下测试字符串:

在支持的浏览器中,Intl.分段器

请参见如何从字符串中获取字符数组?了解更多详细信息。

这里已经有很多很好的答案,所以我将只关注按字符拆分。

使用以下测试字符串,由9个字符/15个码位/20个码单元组成:

国际.分段器(在支持的浏览器中)

可编辑比较:https://stackblitz.com/edit/stackblitez-typescript-lrag9u?devToolsHeight=90&file=index.ts

来源 链接

我没有看到其他答案提到国际分段器,它“支持区域设置敏感的文本分割”,这意味着在处理由多个代码点组成的字符时,可以可靠地识别第一个字符。在浏览器中依赖它的最大警告是缺乏Firefox支持,请参阅https://caniuse.com/mdn-javascript_builtins_intl_segmenter_segment网站&https://bugzilla.mozilla.org/show_bug.cgi?id=1423593.

这里已经有很多很好的答案,所以我将只关注按字符拆分。

以下是一些方法的比较:https://stackblitz.com/edit/stackblitez-typescript-lrag9u?devToolsHeight=90&file=index.ts

使用以下测试字符串:

常量str='🐅-👨‍👩‍👧-நி-깍-葛󠄀';

天真、分裂

str.split(“”);//(20)[“\ud83d”,“\udc05','-','\ud83d',''\udc68','','\ud83d'ந', 'ி', '-', '깍', '-', '葛', '\udb40','\udd00']

稍微好一点,传播运营商

[…字符串]// (15) ["🐅", '-', '👨', '‍', '👩', '‍', '👧', '-', 'ந', 'ி', '-', '깍', '-', '葛', '󠄀']

在支持的浏览器中,Intl.Segmenter

[…new Intl.Segmenter().segment(str)].map((g)=>g.segment);// (9) ["🐅", '-', '👨‍👩‍👧', '-', 'நி', '-', '깍', '-', '葛󠄀']

绘图仪1.4.0

从“Graphemer”导入Graphemer;const splitter=新图示器();splitter.split图表(str);// (9) ["🐅", '-', '👨‍👩‍👧', '-', 'நி', '-', '깍', '-', '葛󠄀']

洛达什4.17.10

从“lodash”导入;_.split(str,“”);// (11) ["🐅", '-', '👨‍👩‍👧', '-', 'ந', 'ி', '-', '깍', '-', '葛', '󠄀']

织物.jsv6.0.0-beta10版graphemeSplit(内部函数)

从'导入{graphemeSplit}/fabric_graphme拆分';graphemeSplit(str);// (15) ["🐅", '-', '👨', '‍', '👩', '‍', '👧', '-', 'ந', 'ி', '-', '깍', '-', '葛', '󠄀']

@formatjs国际分段器11.4.2聚乙烯填料

等待导入(“@formatjs/intl-segmenter/polyfill-force”);[…new Intl.Segmenter().segment(str)].map((g)=>g.segment);// (9) ["🐅", '-', '👨‍👩‍👧', '-', 'நி', '-', '깍', '-', '葛󠄀']