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