如何在javascript中按数组中的字符拆分数组?

时间:2012-07-31 20:16:55

标签: javascript

我有一个字符数组:

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

我想通过此数组中的任何字符拆分字符串。例如,

var str = 'adbasscdabda';

应该成为

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

我如何实现这一目标?我曾尝试将字符串一次拆分一个字符,然后将子数组连接在一起,但这看起来很笨拙。

3 个答案:

答案 0 :(得分: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"]

答案 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('|');

答案 2 :(得分: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" );
相关问题