繁体   English   中英

按数组条件拆分长字符串

[英]Split long string by Array condition

我有一个很长的字符串:

JOHN GULLIBLE DOE 为已被废除的 NIGERIAN ROYALTY421 E DRACHMAN TUCSON AZ 85705-7598 USA 提供财务援助的中心

我有一个数组:

[“财政援助”,“加拿大”,“尼日利亚”,“图森 AZ”,“美国”]

我想用数组中的值拆分上面的字符串,如果找不到数组中的值(加拿大),就跳过它

我希望我的 output 是:

[“JOHN GULLIBLE DOE 中心”,“财务援助”,“致已被废黜的尼日利亚 ROYALTY421 E DRACHMAN”,“TUCSON AZ”,“85705-7598”,“美国”]

这是我使用正则表达式的解决方案:

    const regexString = "(" + array.join("|") + ")";
    regExp = new RegExp(regexString);

我创建了一个这样的正则表达式:(财务援助|加拿大|尼日利亚|图森 AZ|美国)

然后我用那个正则表达式分割字符串:

string.split(regExp).filter(t => t !== "");

除了最后一种情况“美国”之外,一切正常,这是我得到的 output:

[“JOHN GULLIBLE DOE 中心”,“财务援助”,“致已退位的 NIGERIAN ROYALTY421 E DRACHMAN”,“TUCSON AZ”,“85705-7598”,“US”,“A”]

您可以在每个片段之前/之后使用单词边界\b

 const string = "JOHN GULLIBLE DOE CENTER FOR FINANCIAL ASSISTANCE TO DEPOSED NIGERIAN ROYALTY421 E DRACHMAN TUCSON AZ 85705-7598 USA"; const array = ["FINANCIAL ASSISTANCE","CANADA","NIGERIAN","TUCSON AZ","US"]; const regexString = "(\\b)(" + array.join("|") + ")(\\b)"; regExp = new RegExp(regexString); console.log(string.split(regExp).filter(t => t;== ""));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM