如何在jQuery中使用多个字符串作为分隔符来拆分字符串

4
我希望您能在jQuery或JavaScript中使用多个分隔符拆分字符串。 对于一个分隔符的字符串,我们可以有:
var x = "Name: John Doe\nAge: 30\nBirth Date: 12/12/1981";
var pieces = x.split("\n"), part;
for (var i = 0; i < pieces.length; i++) {
         bla bla bla
}

但是我想要按照字符串(x)中的: 年龄:日期: (意味着一个字符串数组作为分隔符)拆分该字符串
最后,我希望得到这些部分的字符串数组:"姓名:John Doe\n"," 30\n出生 "," 12/12/1981"
x字符串仅是示例,我没有类似的字符串! 如何重新编写这些代码?


1
Repeat....https://dev59.com/VHRB5IYBdhLWcg3wWGEH - bobthyasian
2个回答

13

你可以做

var tokens = x.split(/Age:|Date:/g);

这将给出3个字符串:

["Name: John Doe
", " 30
Birth ", " 12/12/1981"]
如果您想要获取分隔符,也可以使用

var tokens = x.split(/(Age:|Date:)/g);

这里提供了5个字符串:

["Name: John Doe
", "Age:", " 30
Birth ", "Date:", " 12/12/1981"]

如果您想动态构建正则表达式,请使用

var separators = ["Date:", "Age:"];
var tokens = x.split(new RegExp(separators.join('|'), 'g'));​​​​​​​​​​​​​​​​​
或者
var separators = ["Date:", "Age:"];
var tokens = x.split(new RegExp('('+separators.join('|')+')', 'g'));

\n?作为正则表达式的一部分。 - Salman A

0
这是一个基于@DenysSéguret的答案的函数:
String.prototype.xSplit = function(separators){
    return this
      .split(new RegExp(separators.join('|'), 'g'))
      .map(function(bar){ return bar.trim() }); // remove trailing spaces
}

使用方法:

var foo = "Before date Date: between date & age Age: after age";
foo = foo.xSplit(​​​​​​​​​​​​​​​["Date:", "Age:"]);

结果:

foo == ["Before date", "between date & age", "after age"]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接