2013-06-24 9 views
19

Ich versuche, Werte in String aufgeteilt werden, zum Beispiel habe ich einen string: Split-String durch Raum und neue Zeile in Javascript

var example = "X Y\nX1 Y1\nX2 Y2" 

und ich mag es durch Leerzeichen trennen und \n so mag ich so etwas bekommen:

var 1 = X 
var 2 = Y 
var 3 = X1 
var 4 = Y1 

Und ist es möglich, dass nach dem Wert XI ein Y zu überprüfen? Ich meine X und Y sind Lat und Lon, also brauche ich beide Werte.

+2

Es gibt keine Möglichkeit, Sie dürfen diese Konstrukte haben, mit in JS beginnen, so dass Sie erste Show gültig JavaScript benötigen. – mplungjan

+0

duplizieren: http://StackOverflow.com/Questions/96428/How-Do-I-Split-this-String-with-Javascript –

Antwort

37

Sie können Zeilenumbrüche durch Leerzeichen ersetzen und dann teilen durch Raum (oder umgekehrt).

example.replace(/\n/g, " ").split(" ") 

Demo: http://jsfiddle.net/fzYe7/

Wenn Sie die Zeichenfolge zuerst bestätigen müssen, könnte es durch Newline ersten Teil einfacher sein, eine Schleife durch das Ergebnis und validieren jede Zeichenfolge mit einem regulären Ausdruck, die die Zeichenfolge an die aufspaltet gleichzeitig:

var example = "X Y\nX1 Y1\nX2 Y2"; 
var coordinates = example.split("\n"); 
var results = []; 

for(var i = 0; i < coordinates.length; ++i) { 
    var check = coordinates[ i ].match(/(X.*) (Y.*)/); 

    if(!check) { 
     throw new Error("Invalid coordinates: " + coordinates[ i ]); 
    } 

    results.push(check[ 1 ]); 
    results.push(check[ 2 ]);  
} 

Demo: http://jsfiddle.net/fzYe7/1/

+0

Und wenn ich diese Werte Chack X Y Zahlen sind? Ich versuche so etwas: [Beispiel] (http://jsfiddle.net/fzYe7/3/) aber es funktioniert nicht:/Ich habe void 0 – lol2x

+0

http://jsfiddle.net/fzYe7/4/ – JJJ

+0

Und (http://jsfiddle.net/fzYe7/7/) wenn ich jeden Zahlenwert in vars speichern möchte (in Schleife von c, weil ich nicht weiß, wie viele Koordinaten ich bekommen werde), ist es möglich, die erste Zahl in X * zu speichern und 2. in Y *? * ist eine Nummer – lol2x

1

Sie können es zuerst durch neue Char teilen und speichern Sie es in einem Array und dann können Sie es spcae teilen.

folgende kann ein referance Link

8

var string = "x y\nx1 y1\nx2 y2"; 
 
var array = string.match(/[^\s]+/g); 
 

 
console.log(array);

jsfiddle geben: http://jsfiddle.net/fnPR8/

es bricht die Zeichenfolge in ein Array von Wörtern dann würde man über sie iterieren müssen. ..

2

einen regulären Ausdruck Verwenden Sie den Stringliteral durch alle Leerzeichen zu trennen.

var example = "X Y \nX1 Y1 \nX2 Y2"; 
var tokens = example.split(/\s+/g); 

console.log(tokens.length); 
for(var x = 0; x < tokens.length; x++){ 
    console.log(tokens[x]); 
} 

Arbeitsbeispielhttp://jsfiddle.net/GJ4bw/