2012-07-31 84 views
2

我有字符數組:如何通過javascript中的數組中的字符來分割數組?

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

欲通過任何在此數組中的字符分割的字符串。例如,

var str = 'adbasscdabda'; 

應該成爲

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

如何實現這一目標?我曾嘗試一次將字符串拆分爲一個字符,然後將子數組連接在一起,但這看起來很笨拙。

回答

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"] 
+0

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

+0

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

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('|'); 
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"); 
+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