2017-01-22 7 views
0

Der folgende Code in ein Array someString aufteilt, wobei die Begrenzungszeichen in separatorsBehalten Sie mehrere Trennzeichen nach der Trennung von String?

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

    tokens = tokens.filter(Boolean); 

mag ich würde jedoch angegeben werden, um die jeweiligen Begrenzungszeichen zu halten, wenn gespaltet. Ich habe mehrere Lösungen gefunden, aber die meisten zielen nur auf ein Trennzeichen ab, was wesentlich einfacher zu handhaben ist. Wie würde ich mehrere Trennzeichen wie in meinem Beispiel behandeln und sie behalten, wenn sie geteilt werden?

+1

Könnten Sie eine Beispieleingabezeichenfolge und ein Ausgabearray angeben? – Giladd

Antwort

1

Was ist damit?

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

Jetzt haben Sie beide Elemente und Begrenzungszeichen in einem Array:

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

Splitting wie dies geschehen könnte:

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]); 
} 

So erhalten Sie:

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

Hoffe es hat geholfen!

Verwandte Themen