私は文字の配列を持っています:
var separators = ['a', 'b', 'c'];
この配列の任意の文字で文字列を分割したいと思います。例えば、
var str = 'adbasscdabda';
になる必要があります
var splitUpArray = ['d', 'ss', 'd', 'd'];
どうすればこれを達成できますか?文字列を一度に1文字ずつ分割してから、サブ配列を連結しようとしましたが、これは扱いにくいようです。
私は文字の配列を持っています:
var separators = ['a', 'b', 'c'];
この配列の任意の文字で文字列を分割したいと思います。例えば、
var str = 'adbasscdabda';
になる必要があります
var splitUpArray = ['d', 'ss', 'd', 'd'];
どうすればこれを達成できますか?文字列を一度に1文字ずつ分割してから、サブ配列を連結しようとしましたが、これは扱いにくいようです。
この例では、次の.match
メソッドを使用できます。
var str = 'adbasscdabda';
str.match(/[^abc]+/g); // ["d", "ss", "d", "d"]
より普遍的な解決策:
var separators = ['a', 'b', 'c'];
var re = RegExp('[^' + separators.join('') + ']+', 'g');
var str = 'adbasscdabda';
str.match(re); // ["d", "ss", "d", "d"]
1つのループを実行して、最初の配列のすべての文字を設定された文字に置き換えてから、.split()
その単一の文字を使用することができます。それは維持するのが簡単かもしれません。
var separators = ['a', 'b', 'c'];
var str = 'adbasscdabda';
for (var l = separators.length, i=0; i<l; i++) {
str.replace(separators[i], '|');
}
var splitUpArray = str.split('|');
これを試して。
// Array.prototype.filter must be defined.
var splitStrByChars = function( str, chars ){
return str.split( new RegExp( "[" + chars.join('') + "]" ) ).filter(function(a){
return a ? a : null;
});
};
var str = "adbasscdabda";
var separators = ['a', 'b', 'c'];
console.log( splitStrByChars( str, separators ).join( ', ' ) == "d, ss, d, d" );