全部版块 我的主页
论坛 数据科学与人工智能 IT基础 Scala及其他JVM语言
1068 0
2022-12-22
极客测试开发进阶训练营2022年-霜飞浪活河汉精
你可能不晓得的字符串分割技术
最近看到一种新的拆分字符串的办法,就是用Intl。分割器将表情字符串分割成字形。

我以前从未运用过这个Intl对象。如今让我们来看看。

假定您想要将用户输入拆分红句子。这似乎是一个简单的split()任务...但是这个问题有很多奇妙之处。

你好!“你好吗,”。拆分(/[。!?]/);
// ['你好','你好',' ']
运用split()将丧失定义的分隔符,并在任何中央包含这些空格。而且由于它依赖于硬编码的分隔符,所以对言语不敏感。

我不懂日语,但是你如何将下面的字符串拆分红单词或句子呢?

//我是一只猫。我的名字是塔努基。
我这一代是猫。第一个名字是はたぬき.'
普通的string办法在这里没用,Intl JavaScript API能够处理这个问题。

国际机场。分段者来救援了。
国际机场。Segmenter是一个JavaScript对象,用于对辨别地域的文本停止分段。它能够协助我们从字符串中提取有意义的项目,如单词、句子或字形。它的运用方式与其他结构函数相似。您能够运用new关键字创立一个Intl。分段器对象。

const segmenter = new Intl。分段器(locale,{ granularity:" word " });
在上面的代码中,locale是一个指示要运用的区域设置的字符串。Granulity是一个字符串,表示分段的粒度。能够是“语法”、“单词”、“句子”中的一种。



国际机场。Segmenter有一个十分有用的办法叫做segment(),能够把文本分割成有意义的片段。

const segments = segment er . segment(text);
在上面的代码中,text是要拆分的文本,segments是返回段的迭代器。您能够运用for-of循环遍历线段,或者运用Array.from()将它们转换为数组。

const text = "你好,世界!你今天怎样样?”;
const segmenter = new Intl。Segmenter("en-US ",{粒度:"句子" });
const segments = segment er . segment(text);

for(段的常数段){
console.log(段);
}

//输出:
// { index: 0,value:“你好,世界!”,breakType:“”,breakIndex: 12 }
// { index: 13,value:“你今天怎样样?”,breakType:“”,breakIndex: 31 }
国际机场。Segmenter对象还有一些其他有用的办法,比方breakType,用来检索分段的类型(比方,句尾能否包含句号)。另一个有用的办法是breakType,它用于检索分段的类型。

例如:

const text = "你好,世界!你今天怎样样?”;
const segmenter = new Intl。Segmenter("en-US ",{粒度:"句子" });
const segments = segment er . segment(text);

for(段的常数段){
console . log(segment . break type);
}

//输出:
//“感慨号”
//“问题”
国际机场。Segmenter还有一个有用的静态办法,称为supportedLocalesOf(),它能够协助您肯定您的阅读器能否支持特定的区域设置。

const supported = Intl。segmenter . supported localesof([" en-US "," zh-CN "]);
console.log(支持);

//输出:
// ['美国','中国']
在上面的代码中,支持的数组包含阅读器支持的区域设置。

假如想更好地分割文本,能够运用Intl。ListFormat对象。它能够协助你将文本分割成有意义的列表项。

与Intl的方式相似。Segmenter,您能够运用new关键字创立一个Intl。ListFormat对象。

const listFormat = new Intl。ListFormat(locale,{ style: "long ",type:" connection " });
在上面的代码中,locale是一个指示要运用的区域设置的字符串。和styletype是对象的属性,用于指定列表格式。作风能够是“长”或“短”,类型能够是“合”或“分”(或)。

国际机场。ListFormat有一个十分有用的办法叫做Format(),能够把数组转换成有意义的列表。

const list = ["苹果"、"香蕉"、"橙子"];
const formatted = list format . format(list);
console.log(格式化);

//输出:
//“苹果、香蕉和橘子”
在上面的代码中,格式化的是转换后的列表字符串。

Word的粒度附带了一个额外的isWordLike属性。
假如一个字符串被分红单词,一切的片段都包括空格和换行符。运用isWordLike属性将它们挑选出来。

const segmenterDe = new Intl。分段符(' de ',{
粒度:“单词”
});
const segments de = segmenter de . segment('是geht ab吗?');

console.log([...segments de]);
// [
// { segment: 'Was ',索引:0,输入:' Was geht ab?',isWordLike: true },
// { segment:' ',索引:3,输入:“是geht ab吗?”,isWordLike: false },
// ...
// ]

console.log([...segmentsDe]。filter(s = > s . is wordlike));
// [
// { segment: 'Was ',索引:0,输入:' Was geht ab?',isWordLike: true},
// { segment: 'geht ',索引:4,输入:' geht ab吗?',isWordLike: true },
// { segment: 'ab ',索引:9,输入:' geht是ab吗?',isWordLike: true }
// ]
上面经过isWordLike过滤会删除标点符号,比方。,-,还是?。

运用Intl。分段器对表情符号停止分段。
假如你想把一个字符串拆分红视觉表情符号,Intl。Segmenter也是一个很好的协助。


极客测试开发进阶训练营2022年-霜飞浪活河汉精
download链接:https://pan.baidu.com/s/1FpKqc05vc5mlASC5lAb3CA?pwd=x1vf
提取码:x1vf
--来自百度网盘超级会员V5的分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群