2017-03-29 3 views
-4

Guten Morgen,Split ohne einige Räume

Wenn ich eine Zeichenfolge:

"@Hello(first second), one two" 

Und ich möchte ein Array:

["@Hello(first second)", "one", "two"] 

Wie kann ich das tun?

Danke,

+2

Was hast du schon probiert? – BenM

+0

Mit welcher Logik würden Sie diese Zeichenfolge in dieses Array konvertieren? Wenn Sie jemandem sagen würden, wie es geht, welche Schritte würden Sie ihnen geben? Diese Schritte sind der Ausgangspunkt für den Code, den Sie verwenden, um diesen Prozess zu automatisieren. – David

+0

Was meinst du mit "ohne gleiche Räume"? Was sind sie gleich? Meinst du "ohne ** ein paar Leerzeichen"? – Barmar

Antwort

0

Sie .split() mit RegExp/\s(?!\w+\))/ verwenden können Leerzeichen nicht gefolgt von Wortzeichen durch Schließen Klammer „)“

var str = "@Hello(first second), one two"; 
var res = str.split(/\s(?!\w+\))/); 
console.log(res); 

Alternativ können Sie .match()/@\w+\(\w+\s\w+(?=\))\)|\w+(?=\s|$)/g mit RegExp verwenden, gefolgt Spiel Spiel "@" gefolgt von einem oder mehreren Wortzeichen gefolgt von "(" gefolgt von Wortzeichen gefolgt von Leerzeichen, gefolgt von Wortzeichen gefolgt von schließenden Eltern ")" oder Wortzeichen gefolgt von Leerzeichen oder Endzeichen von string

var str = "@Hello(first second), one two"; 
var res = str.match(/@\w+\(\w+\s\w+(?=\))\)|\w+(?=\s|$)/g); 
console.log(res); 
+0

Danke. Die Lösung für meinen Fall ist die Aufteilung mit der RegExp/\ s (?! \ W + \)) / – Catarina