簡體   English   中英

如何在javascript中按數組中的字符拆分數組?

[英]How do I split an array by the characters in an array in 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" );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM