2017-01-22 108 views
0

下面的代碼分割someString成陣列,與separators分割字符串後保留多個分隔符?

var separators = ['\\\.', '\\\(', '\\\)', ':', '\\\?', '\\\!', '\\\"', '\\\n']; 
    var tokens = someString.split(new RegExp(separators.join('|'))); 

    tokens = tokens.filter(Boolean); 

但是被指定的分隔符,我想保持各自的分隔符分裂時。我找到了幾種解決方案,但其中大多數只針對一個似乎比較容易處理的分隔符。我如何處理多個分隔符(如我的示例),並在分割時保留它們?

+1

你可以給一個示例輸入字符串和輸出數組? – Giladd

回答

1

這是怎麼回事?

var someString = 'This.Is:A?:Test!With"Delimiters' 
var result = someString.split(new RegExp("([" + separators.join("") + "])+")); 

現在,你必須在一個陣列中的兩個元素和分隔符:

console.log(result) 
> ["This", ".", "Is", ":", "A", ":", "Test", "!", "With", """, "Delimiters"] 

拆分可以這樣進行:

var elements = []; 
var delimeters = []; 
for(var i = 0; i < result.length; i=i+2){ 
    elements.push(result[i]); 
} 
for(var i = 1; i < result.length; i=i+2){ 
    delimeters.push(result[i]); 
} 

所以,你得到:

console.log(elements) 
> ["This", "Is", "A", "Test", "With", "Delimeters"] 
console.log(delimeters) 
> [".", ":", ":", "!", """] 

希望它有幫助!

相關問題