我有一个字符数组:
var separators = ['a', 'b', 'c'];
我想用这个数组中的任何字符分割一个字符串。例如,
var str = 'adbasscdabda';
应该成为
var splitUpArray = ['d', 'ss', 'd', 'd'];
我如何实现这一目标?我曾尝试一次将字符串拆分为一个字符,然后将子数组连接在一起,但这似乎很笨拙。
我有一个字符数组:
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" );