【问题标题】:How split a string in jquery with multiple strings as separator如何在jquery中用多个字符串作为分隔符分割一个字符串
【发布时间】:2023-03-25 12:36:01
【问题描述】:

我想用多个分隔符在 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)拆分为:Age:Date:(表示字符串数组作为分隔符)
最后我想要一个包含这些部分的 sting 数组:“姓名:John Doe\n”、“30\nBirth”、“1981 年 12 月 12 日”
x 字符串只是一个例子,我没有这样的字符串! 我该如何重写这些代码?

【问题讨论】:

标签: javascript jquery regex string split


【解决方案1】:

你可以的

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? 成为正则表达式的一部分。
【解决方案2】:

这是一个基于@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"]

【讨论】:

    猜你喜欢
    • 2021-09-25
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 2021-02-25
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多