2

私は文字の配列を持っています:

var separators = ['a', 'b', 'c'];

この配列の任意の文字で文字列を分割したいと思います。例えば、

var str = 'adbasscdabda';

になる必要があります

var splitUpArray = ['d', 'ss', 'd', 'd'];

どうすればこれを達成できますか?文字列を一度に1文字ずつ分割してから、サブ配列を連結しようとしましたが、これは扱いにくいようです。

4

3 に答える 3

2

この例では、次の.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"]
于 2012-07-31T20:35:15.250 に答える
1

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('|');
于 2012-07-31T20:23:10.067 に答える
1

これを試して。

    // 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" );
于 2012-07-31T20:23:10.400 に答える