如何通过javascript中的数组中的字符来分割数组?

问题描述:

我有字符数组:如何通过javascript中的数组中的字符来分割数组?

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

欲通过任何在此数组中的字符分割的字符串。例如,

var str = 'adbasscdabda'; 

应该成为

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

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

在这个例子中,你可以使用.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"] 
+0

我在想那个。做得好。 – 2012-07-31 20:38:06

+0

谢谢,你也做得很好:)但你走了很长的路 – micnic 2012-07-31 20:41:14

你可以做一个循环来替换第一个数组中的所有字符和一个设置字符,然后使用该单个字符做一个.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"); 
+0

哪里是jQuery的? – 2012-07-31 20:24:39

+0

'separators.join()。replace(/,/ g,'')'因此它是'[abc]'而不是'[a,b,c]'(?) – 2012-07-31 20:28:28

+0

谢谢。 separators.join('')也适用。 ... 哈哈。我应该使用'match'而不是'split'。好吧。 – 2012-07-31 20:37:26