精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

你可能不知道的字符串分割技巧

開發(fā) 前端
Intl.Segmenter 是一個 JavaScript 對象,用于對文本進(jìn)行區(qū)域設(shè)置敏感的分段。它可以幫助我們從字符串中提取有意義的項目,如單詞、句子或字形。

最近看到一個拆分字符串的新方式,就是使用Intl.Segmenter將emoji字符串分割成字形的方法。

我以前都沒用過這個Intl對象,現(xiàn)在我們一起來看看。

假設(shè)你想把用戶輸入拆分成句子,看起來是一個簡單的 split() 任務(wù)...但這個問題有很多細(xì)微之處。

'Hello! How are you?'.split(/[.!?]/);
// ['Hello', ' How are you', '']

使用 split() 會丟失定義的分隔符,并在所有地方包含這些空格。而且因為它依賴于硬編碼的分隔符,所以對語言不敏感。

我不懂日語,但你會如何嘗試將下面的字符串分割成單詞或句子?

// I am a cat. My name is Tanuki.
'吾輩は貓である。名前はたぬき。'

普通的字符串方法在這里是沒有用的,但是Intl JavaScript API 確能解決這個問題。

Intl.Segmenter 來救場

Intl.Segmenter 是一個 JavaScript 對象,用于對文本進(jìn)行區(qū)域設(shè)置敏感的分段。它可以幫助我們從字符串中提取有意義的項目,如單詞、句子或字形。它的使用方式類似于其他的構(gòu)造函數(shù),可以使用 new 關(guān)鍵字來創(chuàng)建一個 Intl.Segmenter 對象。

const segmenter = new Intl.Segmenter(locale, { granularity: "word" });

在上面的代碼中,locale 是字符串,表示要使用的區(qū)域設(shè)置。granularity 是字符串,表示分段的粒度。它可以是 "grapheme"(字形)、"word"(單詞)或 "sentence"(句子)之一。

圖片

Intl.Segmenter 有一個很有用的方法叫做 segment(),它可以將文本拆分為有意義的段。

const segments = segmenter.segment(text);

在上面的代碼中,text 是要拆分的文本,segments 是返回的段的迭代器。你可以使用 for-of 循環(huán)來遍歷段,或者使用 Array.from() 將它們轉(zhuǎn)換為數(shù)組。

const text = "Hello, world! How are you today?";
const segmenter = new Intl.Segmenter("en-US", { granularity: "sentence" });
const segments = segmenter.segment(text);

for (const segment of segments) {
console.log(segment);
}

// Output:
// { index: 0, value: "Hello, world!", breakType: "", breakIndex: 12 }
// { index: 13, value: "How are you today?", breakType: "", breakIndex: 31 }

Intl.Segmenter 對象還有其他一些有用的方法,比如 breakType,用于檢索分段的類型(例如,句子的末尾是否包含句號)。另一個有用的方法是 breakType,用于檢索分段的類型。

例如:

const text = "Hello, world! How are you today?";
const segmenter = new Intl.Segmenter("en-US", { granularity: "sentence" });
const segments = segmenter.segment(text);

for (const segment of segments) {
console.log(segment.breakType);
}

// Output:
// "exclamation"
// "question"

Intl.Segmenter 還有一個很有用的靜態(tài)方法叫做 supportedLocalesOf(),它可以幫助你確定瀏覽器是否支持特定的區(qū)域設(shè)置。

const supported = Intl.Segmenter.supportedLocalesOf(["en-US", "zh-CN"]);
console.log(supported);

// Output:
// ['en-US', 'zh-CN']

在上面的代碼中,supported 數(shù)組包含瀏覽器支持的區(qū)域設(shè)置。

如果你想要對文本進(jìn)行更細(xì)粒度的分段,你可以使用 Intl.ListFormat 對象。它可以幫助你將文本拆分為有意義的列表項。

使用方式類似于 Intl.Segmenter,你可以使用 new 關(guān)鍵字創(chuàng)建一個 Intl.ListFormat 對象。

const listFormat = new Intl.ListFormat(locale, { style: "long", type: "conjunction" });

在上面的代碼中,locale 是字符串,表示要使用的區(qū)域設(shè)置。style 和 type 是對象的屬性,用于指定列表格式。style 可以是 "long" 或 "short",type 可以是 "conjunction"(并列)或 "disjunction"(或)。

Intl.ListFormat 有一個很有用的方法叫做 format(),它可以將數(shù)組轉(zhuǎn)換為有意義的列表。

const list = ["apple", "banana", "orange"];
const formatted = listFormat.format(list);
console.log(formatted);

// Output:
// "apple, banana, and orange"

在上面的代碼中,formatted 是轉(zhuǎn)換后的列表字符串。

Word 的顆粒度帶有一個額外的isWordLike屬性

如果把一個字符串分割成單詞,所有的片段都包括空格和換行符。使用isWordLike屬性將它們過濾掉。

const segmenterDe = new Intl.Segmenter('de', {
granularity: 'word'
});
const segmentsDe = segmenterDe.segment('Was geht ab?');

console.log([...segmentsDe]);
// [
// { segment: 'Was', index: 0, input: 'Was geht ab?', isWordLike: true },
// { segment: ' ', index: 3, input: 'Was geht ab?', isWordLike: false },
// ...
// ]

console.log([...segmentsDe].filter(s => s.isWordLike));
// [
// { segment: 'Was', index: 0, input: 'Was geht ab?', isWordLike: true},
// { segment: 'geht', index: 4, input: 'Was geht ab?', isWordLike: true },
// { segment: 'ab', index: 9, input: 'Was geht ab?', isWordLike: true }
// ]

上面通過isWordLike進(jìn)行過濾會刪除標(biāo)點符號,如.、-、或?。

使用 Intl.Segmenter 來分割 emojis

如果你想把一個字符串分割成可視化的emojis,Intl.Segmenter也是一個很好的幫助。

const emojis = '???????????????';

// ----
// Split by code units
console.log(emojis.split(''));
// ['\uD83E', '\uDEE3', '\uD83E', '\uDEF5', '\uD83D', '\uDE48']

// ----
// Split by code points
console.log([...emojis]);
// ['??', '??', '??', '?', '??', '?', '??', '?', '??']

// ----
// Split by graphemes
const segmenter = new Intl.Segmenter('en', {
granularity: 'grapheme'
});
const segments = segmenter.segment(emojis);

console.log(Array.from(
segmenter.segment(emojis),
s => s.segment
));
// ['??', '??', '???????????']

請注意,字形也包括空格和 "正常 "字符。

編輯中可能存在的bug沒法實時知道,事后為了解決這些bug,花了大量的時間進(jìn)行l(wèi)og 調(diào)試,這邊順便給大家推薦一個好用的BUG監(jiān)控工具 Fundebug。

參考

原文:https://www.stefanjudis.com/today-i-learned/how-to-split-javascript-strings-with-intl-segmenter/

最后

本文譯自:https://marmelab.com/blog/2022/09/20/react-i-love-you.html

責(zé)任編輯:武曉燕 來源: 大遷世界
相關(guān)推薦

2022-12-09 15:06:26

字符串Intl字符串分割

2015-08-13 09:03:14

調(diào)試技巧

2021-01-05 11:22:58

Python字符串代碼

2020-01-29 19:40:36

Python美好,一直在身邊Line

2012-11-23 10:57:44

Shell

2024-03-04 00:00:00

Kubernetes技巧API

2022-09-20 11:58:27

NpmNode.js

2019-11-20 10:25:06

sudoLinux

2023-02-27 09:20:24

絕對定位CSS

2023-01-29 09:46:47

Dialog彈窗模態(tài)

2017-11-07 21:58:25

前端JavaScript調(diào)試技巧

2021-02-28 08:34:14

CSS outline-off負(fù)值技巧

2017-02-23 19:42:55

AS Android代碼

2020-11-03 09:51:04

JavaScript開發(fā) 技巧

2019-11-25 14:05:47

Python裝飾器數(shù)據(jù)

2014-12-08 10:39:15

2021-02-16 09:02:59

Python代碼技巧

2021-02-21 06:36:57

運算技巧按位

2021-07-12 07:59:06

安全 HTML 屬性

2014-04-10 13:15:54

PythonPython技巧
點贊
收藏

51CTO技術(shù)棧公眾號

日本一级片免费| 在线观看的毛片| 日韩av成人| 日日骚欧美日韩| 日韩小视频在线| 成人在线观看一区二区| 超碰国产一区| 亚洲欧洲精品一区二区三区| 91成人免费看| 日本视频免费观看| 中文在线日韩| 亚洲跨种族黑人xxx| 三年中国国语在线播放免费| 日本小视频在线免费观看| 久久综合精品国产一区二区三区| 成人黄色av播放免费| 国产精品suv一区二区| 精品理论电影在线| 日韩视频在线你懂得| 欧美日韩在线成人| hd国产人妖ts另类视频| 欧美国产综合色视频| 国产精品18毛片一区二区| 午夜一区二区三区四区| 亚洲视频碰碰| 日韩中文字幕不卡视频| 中文字幕在线播放视频| 亚洲一区二区av| 欧美日韩在线第一页| 日本丰满大乳奶| 3p视频在线观看| 久久亚洲精品小早川怜子| 91成人免费观看| 一二三四区在线| 麻豆精品网站| 97视频com| 欧美日韩在线国产| 国产精品久久观看| 中文字幕日韩精品在线观看| 疯狂揉花蒂控制高潮h| www.久久东京| 欧美一区二区在线看| 超碰在线97免费| 久久sese| 91福利国产精品| 成年人视频网站免费观看| www.youjizz.com在线| 伊人夜夜躁av伊人久久| 久久久成人精品一区二区三区| 精品999视频| 久久综合九色综合久久久精品综合| 国产精华一区| 刘亦菲毛片一区二区三区| 国产精品资源站在线| 91久久久久久久久久| 亚洲香蕉在线视频| 久久精品99国产精品日本| 国产精品美女久久| 中文字幕资源网| 久久精品国产99久久6| 成人女保姆的销魂服务| 91九色蝌蚪91por成人| 精品一区二区综合| 91老司机精品视频| 精品国产区一区二| 成人三级伦理片| 国产亚洲精品自在久久| 日韩在线视频观看免费| www.av亚洲| 久久99精品久久久水蜜桃| 四虎影院在线域名免费观看| 91丝袜美腿高跟国产极品老师| 九九九九精品九九九九| 天堂中文在线视频| 国产清纯白嫩初高生在线观看91 | 日本一区二区三区精品| 亚洲欧美日本国产专区一区| 日本人成精品视频在线| 最近中文字幕在线免费观看| 激情都市一区二区| 国产精品久久精品国产| 日本高清中文字幕二区在线| 中文字幕免费不卡在线| 国产精品亚洲天堂| 波多野结衣乳巨码无在线观看| 精品国产乱码久久久久久虫虫漫画| 国产精品久久中文字幕| 韩国精品主播一区二区在线观看| 欧美日韩一区精品| 免费黄视频在线观看| 另类春色校园亚洲| 最近2019中文字幕大全第二页| 色欲人妻综合网| 国产一区二区三区成人欧美日韩在线观看 | 欧美男人的天堂一二区| 亚洲最大视频网| 一道在线中文一区二区三区| 色偷偷噜噜噜亚洲男人| 久久亚洲AV无码| 日韩和的一区二区| 超碰97国产在线| 久久精品蜜桃| 亚洲最色的网站| 无码人妻精品一区二区三区66| 99国内精品久久久久| 亚洲国产精品免费| 成人三级视频在线观看| 99精品免费视频| 国产在线观看一区二区三区| 污视频软件在线观看| 国产精品免费久久久久| 欧美 国产 综合| 精品国产乱码一区二区三区| 亚洲女同精品视频| 精品97人妻无码中文永久在线| 老司机精品视频网站| 成人av免费在线看| 免费黄色在线| 色婷婷国产精品久久包臀| 亚洲一二三不卡| 国产一区二区三区不卡视频网站| 欧美疯狂性受xxxxx另类| 国产99久久久久久免费看| 成人av午夜电影| 亚洲自拍偷拍一区二区三区| 亚洲天堂1区| 亚洲精品久久久久| 久久久国产精品人人片| 国产一区二区在线视频| 一区二区三区偷拍| 欧美日韩精品免费观看视完整| 精品91自产拍在线观看一区| 永久免费看mv网站入口| 麻豆精品国产91久久久久久| 久久综合九色99| 波多野结衣中文字幕久久| 91精品国产综合久久福利| www.黄色在线| 久久看片网站| 欧美一进一出视频| 在线中文字幕播放| 亚洲精品ady| 69精品久久久| 成人a区在线观看| 青青青青草视频| 林ゆな中文字幕一区二区| 欧美精品18videos性欧| 亚洲精品911| 亚洲一区在线看| www男人天堂| 一区视频在线看| 国产欧美综合精品一区二区| 日本无删减在线| 精品处破学生在线二十三| 久久国产精品波多野结衣av| 国产一区二区毛片| japanese在线播放| 粉嫩的18在线观看极品精品| 久久久伊人日本| 午夜av免费在线观看| 欧美特级www| 久久精品无码一区| 蜜桃精品视频在线观看| 特级黄色录像片| 亚洲成av人片在线观看www| 欧美精品激情视频| 天堂a中文在线| 欧美亚洲高清一区二区三区不卡| 国产一区二区三区精品在线| 美女视频黄 久久| 黄色网址在线免费看| 一区二区网站| 欧美最近摘花xxxx摘花| 二区在线观看| 宅男噜噜噜66一区二区66| 九九视频在线免费观看| 99re成人精品视频| 亚洲久久中文字幕| 国内精品福利| 欧美裸体网站| 高清一区二区中文字幕| 欧美精品成人在线| 国产在线观看免费网站| 欧美一区二区三区人| 国产女同在线观看| 国产亚洲精品aa午夜观看| 欧美性猛交xxxx乱大交91| 激情综合自拍| 日韩美女一区| 麻豆一区在线| 欧美一区二三区| 免费av网站在线看| 亚洲精品国产成人| 这里只有精品999| 亚洲国产美女搞黄色| 成年人在线免费看片| 国产999精品久久| 激情综合网婷婷| 欧美日本亚洲韩国国产| 欧洲精品在线一区| 清纯唯美激情亚洲| 国产精品99久久久久久www| av网站大全在线| 国产一区二区三区直播精品电影 | 亚洲欧美激情四射在线日| 国产精品玖玖玖| 精品人伦一区二区三区蜜桃网站| 中文字幕第69页| eeuss影院一区二区三区| 精品久久久99| 日韩精品免费专区| 国产综合中文字幕| 中文字幕一区二区av| 欧美性bbwbbwbbwhd| 国产精品15p| 亚洲va男人天堂| 成人深夜福利| 青青草一区二区| 888av在线视频| 精品国产欧美一区二区五十路| 手机看片福利在线观看| 精品久久久久久久人人人人传媒| 夜夜躁狠狠躁日日躁av| 日韩欧美福利视频| 日韩av女优在线观看| 综合久久综合久久| 你懂得视频在线观看| 91麻豆国产福利精品| 天堂va欧美va亚洲va老司机| 精品一区二区av| 亚洲天堂网一区| 视频一区在线视频| 国产aaa一级片| 一本色道久久综合亚洲精品高清| 99热这里只有精品免费| 欧美在线亚洲| 麻豆一区二区三区在线观看| 国产电影一区二区在线观看| 水蜜桃亚洲一二三四在线| 欧美美女在线观看| 欧美精品国产精品久久久 | 国产亚洲成人精品| 有码一区二区三区| 欧美日韩大片在线观看| 亚洲欧美偷拍另类a∨色屁股| 国产麻豆a毛片| 国产精品成人免费在线| 欧美日韩午夜视频| 综合亚洲深深色噜噜狠狠网站| 欧美自拍偷拍网| 国产精品久久久久aaaa樱花| 日韩一区二区三区四区视频| 国产精品女主播av| 懂色av粉嫩av蜜臀av一区二区三区| 中文字幕精品一区二区精品绿巨人 | 日本高清精品| 91在线免费网站| 日本99精品| 国产一区二区三区四区五区加勒比| 老牛精品亚洲成av人片| 久久精品日产第一区二区三区精品版 | 91精品黄色片免费大全| 国产视频www| 精品国产免费人成电影在线观看四季 | 久久久久久久免费| 视频精品在线观看| 在线视频亚洲自拍| 国产精品第十页| 国产午夜福利在线播放| 噜噜爱69成人精品| 九九热免费在线观看| 国产精品夜夜嗨| 精品人妻一区二区免费视频| 国产日韩欧美综合一区| 夫妻性生活毛片| 亚洲动漫第一页| 成人免费毛片视频| 91精品国产欧美一区二区成人| 性一交一乱一乱一视频| 日韩大陆欧美高清视频区| 国产粉嫩一区二区三区在线观看| 日韩在线观看免费全集电视剧网站| 91麻豆国产福利在线观看宅福利| 午夜精品久久久久久久久久久久久| 亚洲va中文在线播放免费| 91久久精品视频| 蜜桃一区av| 一卡二卡3卡四卡高清精品视频| 国产精品啊啊啊| 日韩精品你懂的| 粉嫩绯色av一区二区在线观看| b站大片免费直播| 亚洲视频图片小说| 在线观看免费国产视频| 欧美三级电影网| 五月天婷婷社区| 色综久久综合桃花网| 欧美1234区| 国产欧美日韩精品在线观看| 国产精品videossex| 亚洲va久久久噜噜噜久久狠狠| 亚洲婷婷免费| 91极品尤物在线播放国产| 国产69精品久久99不卡| 亚洲精品国产精品国自| 精品国产乱码久久久久久天美| 91成人一区二区三区| 亚洲欧美成人一区二区在线电影| 3d玉蒲团在线观看| 国产精品狼人色视频一区| 国产区精品视频在线观看豆花| 一本一道久久a久久综合精品| 美女精品在线| 国产精品一级黄片| 亚洲激情在线激情| 伊人网综合在线| 亚洲欧美日韩久久久久久| 免费看电影在线| 成人福利视频在线观看| 国产精品一国产精品| 国产黄色片免费在线观看| 国产麻豆精品theporn| 国产精品免费无码| 精品久久久久久电影| 亚洲风情第一页| 久久国产精品久久久久久| 国外成人福利视频| 欧美亚洲另类在线一区二区三区| 最新日韩欧美| 老熟女高潮一区二区三区| 一区二区三区在线免费播放| ,一级淫片a看免费| 日韩在线免费av| 经典三级一区二区| 欧美不卡在线一区二区三区| 亚洲久久一区二区| 老司机午夜免费福利| 亚洲国产综合色| 亚洲av色香蕉一区二区三区| 久久综合免费视频| 久久wwww| 在线观看污视频| 国产精品一品二品| 欧美精品xxxxx| 日韩一区二区在线看片| 国产精品实拍| 91免费综合在线| 牛牛国产精品| 丰满少妇中文字幕| 亚洲一区日韩精品中文字幕| 丁香六月色婷婷| 韩国三级日本三级少妇99| 美女一区二区在线观看| 国产精品秘入口18禁麻豆免会员| av爱爱亚洲一区| 亚洲黄色免费观看| 亚洲天堂一区二区三区| 国产精成人品2018| 中文字幕乱码一区二区三区 | 性欧美18—19sex性高清| 亚洲不卡av一区二区三区| 天天干天天草天天射| 日本电影亚洲天堂| 日韩久久视频| 在线一区二区不卡| 亚洲午夜av在线| 亚洲AV成人无码一二三区在线| 欧洲成人性视频| 成人黄色小视频| 日韩av加勒比| 亚洲第一av色| 激情视频在线观看免费| 国产精品永久免费| 欧美成人一品| 真人bbbbbbbbb毛片| 欧洲av一区二区嗯嗯嗯啊| 欧美边添边摸边做边爱免费| 91av一区二区三区| 免费欧美日韩| 无码人妻精品中文字幕| 精品美女被调教视频大全网站| 深夜成人在线| 伊人久久大香线蕉精品| 福利一区福利二区| 午夜精品免费观看| 欧美精品在线观看91| 日日狠狠久久偷偷综合色| 午夜久久久精品| 亚洲第一狼人社区| 在线视频91p| 国产精品自拍首页| 奇米色一区二区三区四区| 久久久久久久极品内射| 一区二区亚洲精品国产| 日韩欧美高清一区二区三区| 欧美在线观看成人| 亚洲欧洲国产专区| 三级无遮挡在线观看| 91欧美日韩一区| 久久一区国产|