web-dev-qa-db-ja.com

Javascriptでスペースと改行で文字列を分割する

文字列の値を分割しようとしています。たとえば、文字列があります:

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

スペースと\nで区切りたいので、次のようなものを取得します。

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

Xの後にYがあることを確認できますか? XYはLatとLonなので、両方の値が必要です。

23
lol2x

改行をスペースに置き換えてからスペースで分割できます(またはその逆)。

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

デモ: http://jsfiddle.net/fzYe7/

最初に文字列を検証する必要がある場合、最初に改行で分割し、結果をループして、同時に文字列を分割する正規表現で各文字列を検証する方が簡単な場合があります。

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

デモ: http://jsfiddle.net/fzYe7/1/

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

console.log(array); 

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

それはあなたの文字列を単語の配列に分割し、それを反復する必要があります...

10
gmaliar

正規表現を使用して、文字列リテラルをすべて空白で分割します。

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

動作例http://jsfiddle.net/GJ4bw/

4
Kevin Bowersox

最初に新しい文字で分割し、配列に格納してから、spcaeで分割できます。

以下は参考になるかもしれません Link

1
dev2d