我有字符數組:如何通過javascript中的數組中的字符來分割數組?
var separators = ['a', 'b', 'c'];
欲通過任何在此數組中的字符分割的字符串。例如,
var str = 'adbasscdabda';
應該成爲
var splitUpArray = ['d', 'ss', 'd', 'd'];
如何實現這一目標?我曾嘗試一次將字符串拆分爲一個字符,然後將子數組連接在一起,但這看起來很笨拙。
我有字符數組:如何通過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"]
你可以做一個循環來替換第一個數組中的所有字符和一個設置字符,然後使用該單個字符做一個.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");
哪裏是jQuery的? – 2012-07-31 20:24:39
'separators.join()。replace(/,/ g,'')'因此它是'[abc]'而不是'[a,b,c]'(?) – 2012-07-31 20:28:28
謝謝。 separators.join('')也適用。 ... 哈哈。我應該使用'match'而不是'split'。好吧。 – 2012-07-31 20:37:26
我在想那個。做得好。 – 2012-07-31 20:38:06
謝謝,你也做得很好:)但你走了很長的路 – micnic 2012-07-31 20:41:14