如何检查字符串是否包含数组中的子字符串并将其拆分

时间:2019-05-31 09:40:40

标签: javascript split match

我有一个字符串数组,如:

var matchCodFisc = ["C.F.", "CF", "Cod.Fisc.", "C.F"]

,我想检查是否在我的字符串中 (例如var myString= "Cod.Fisc.FGDTFR34L16G643W")存在该子字符串(在这种情况下为“ Cod.Fisc”)。 如果找到子字符串,我想将我的字符串分成两部分,例如["Cod.Fisc", "FGDTFR34L16G643W"]。如何使用JavaScript做到这一点?

4 个答案:

答案 0 :(得分:5)

您可以找到字符串,然后取走其余的字符串。也许最好按长度降序对模式数组进行排序,因为它会先找到最长的字符串。

var matchCodFisc = ["C.F.", "CF", "Cod.Fisc.", "C.F"],
    string = "Cod.Fisc.FGDTFR34L16G643W",
    found = matchCodFisc
        .sort((a, b) => b.length - a.length)
        .find(s => string.startsWith(s)),
    result = [found, string.slice(found.length)];

console.log(result);

答案 1 :(得分:0)

您可以使用查找,包含和拆分

  • 首先使用matchChodFiscfindincludes中找到匹配值
  • 基于found的值创建正则表达式模式
  • 我们使用正则表达式分割并填充了空值

var matchCodFisc = ["C.F.", "CF", "Cod.Fisc.", "C.F"]
var myString= "Cod.Fisc.FGDTFR34L16G643W"

let found = matchCodFisc.find(val=> myString.includes(val))
let regex = new RegExp(`(${found})`, 'gi')

let splited = myString.split(regex).filter(Boolean)

console.log(splited)

答案 2 :(得分:0)

您可以使用Array#findIndex来使用Str.includes()方法

var matchCodFisc = ["C.F.", "CF", "Cod.Fisc.", "C.F"]
var myString = "Cod.Fisc.FGDTFR34L16G643W";
var resindex = matchCodFisc.findIndex(a => myString.includes(a));

console.log([
  matchCodFisc[resindex],
  myString.split(matchCodFisc[resindex])[1]
])

答案 3 :(得分:0)

使数组成为正则表达式:

const matchCodFisc = ["C.F.", "CF", "Cod.Fisc.", "C.F"];
const myString = "Cod.Fisc.FGDTFR34L16G643W";

const splitRegex = new RegExp('('+matchCodFisc.join('|')+')\\w+', 'g');
console.log(splitRegex);
let result = splitRegex.exec(myString)

console.log(result[1])