2013-06-24 15 views
19

próbuję podzielić wartości w ciąg znaków, na przykład mam ciąg znaków: podzielonego ciąg przez przestrzeń i nowej linii w JavaScript

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

i chcę, aby oddzielić je spacjami i \n więc chcę coś takiego:

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

I czy to możliwe, aby sprawdzić, czy po wartości XI mieć Y? Mam na myśli X i Y to Lat i Lon, więc potrzebuję obu wartości.

+2

Nie ma sposobu, masz prawo mieć te konstrukty, aby rozpocząć w JS, więc trzeba do pierwszego pokazu ważny JavaScript. – mplungjan

+0

duplikat: http://stackoverflow.com/questions/96428/how-do-i-split-this-string-with-javascript –

Odpowiedz

37

Możesz zamienić znaki nowej linii spacjami, a następnie podzielić spacją (lub odwrotnie).

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

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

Jeśli trzeba sprawdzić poprawność ciąg pierwsze, może to być łatwiejsze do pierwszego rozłamu przez nową linią, pętla przez wynik i zatwierdź każdy łańcuch z regex, która dzieli ciąg u w tym samym czasie:

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

A jeśli chcę przetasować te wartości X Y to liczby? Próbuję coś takiego: [przykład] (http://jsfiddle.net/fzYe7/3/), ale to nie działa:/Mam nieważne 0 – lol2x

+0

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

+0

I (http://jsfiddle.net/fzYe7/7/) jeśli chcę zapisać każdą wartość liczbową na vars (w pętli ofc, ponieważ nie wiem, ile współrzędnych otrzymam) jest możliwe zapisanie pierwszej liczby w X * i 2. na Y *? * jest liczbą – lol2x

1

możesz podzielić go najpierw przez nowy znak i zapisać go w tablicy, a następnie podzielić go za pomocą speee.

następujący może dać Referance Link

8

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

 
console.log(array);

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

będzie przerwa swój ciąg do tablicy słów wtedy trzeba by iteracyjne nad nim. ..

2

Użyj regex aby podzielić ciąg dosłownego przez wszystkich spacji.

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

Przykład roboczyhttp://jsfiddle.net/GJ4bw/

Powiązane problemy