2016-06-27 7 views
1

Ich bin auf der Suche nach einer Möglichkeit, einen Stich wie "StringBuilder SB = new StringBuilder();" in ein Array mit separaten Wörtern, Symbolen und Leerzeichen solltenJavascript Split String mehrere Möglichkeiten

var string = "StringBuilder SB = new StringBuilder();"; 
var array = string.split(...); 

ausgegeben werden wie:

array = ["StringBuilder", " ", "SB", " ", "=", " ", "new", " ", "StringBuilder", "(", ")", ";"]; 
+6

Kühl. Was hast du probiert? –

+0

https://msdn.microsoft.com/en-us/library/system.string.split(v=vs.110).aspx –

+0

http://stackoverflow.com/questions/650022/how-do-i- split-a-string-mit-multiple-separators-in-javascript –

Antwort

4

nicht sicher, dass dies alle Ihre Bedürfnisse gilt:

"StringBuilder SB = new StringBuilder();".match(/(\s+|\w+|.)/g); 
["StringBuilder", " ", "SB", " ", "=", " ", "new", " ", "StringBuilder", "(", ")", ";"] 
+0

Also funktioniert das einfach durch Kopieren deines Snippets, aber ich bin gespannt wie "/(\s|\w+|.)/g" das macht, was es macht? – Drew

+0

Es passt nur Tokens durch Wechsel. Einer von ihnen ('|' getrennt) sollte übereinstimmen. und wenn nichts mit dem letzten übereinstimmt, bedeutet "." "jedes einzelne Zeichen". Also teilen wir die Eingabe durch Leerzeichen ('\ s +'), Wörter ('\ w +') und andere Zeichen ('.'). –

1

leicht anpassbare Lösung:

function mySplit(str) { 
    function isChar(ch) { 
     return ch.match(/[a-z]/i); 
    } 

    var i; 
    var result = []; 
    var buffer = ""; 
    var current; 
    var onWord = false; 

    for (i = 0; i < str.length; ++i) { 
     current = str[i]; 
     if (isChar(current)) { 
      buffer += current; 
      onWord = true; 
     } else { 
      if (onWord) { 
       result.push(buffer); 
      } 
      result.push(current); 
      onWord = false; 
     } 
    } 
    if(onWord) { 
     result.push(buffer); 
    } 
    return result; 
}