4

複数のセパレータを使用して、jqueryまたはjavascriptで文字列を分割したい。
セパレーターとしての1つの文字列に対して、次のことができます。

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
}

しかし、string(x) を :Age:およびDate:(区切り文字としての文字列配列を意味する) で分割
し、最後に次の部分を含む文字列配列が必要です: "Name: John Doe\n"," 30\nBirth "," 1981 年 12 月 12 日"
x 文字列は単なる例であり、そのような文字列はありません! これらのコードをどのように書き換えることができますか?

4

2 に答える 2

12

できるよ

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'));
于 2012-12-13T19:44:13.567 に答える
0

@DenysSéguretの回答の1つに基づく関数を次に示します。

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"]
于 2016-11-08T15:26:59.853 に答える