web-dev-qa-db-fra.com

fractionner la chaîne par espace et nouvelle ligne en Javascript

J'essaie de diviser les valeurs en chaîne, par exemple j'ai une chaîne:

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

et je veux le séparer par des espaces et \n donc je veux obtenir quelque chose comme ça:

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

Et est-il possible de vérifier qu'après la valeur X j'ai un Y? Je veux dire que X et Y sont Lat et Lon donc j'ai besoin des deux valeurs.

23
lol2x

Vous pouvez remplacer les retours à la ligne par des espaces, puis les diviser par espace (ou vice versa).

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

Démo: http://jsfiddle.net/fzYe7/

Si vous devez d'abord valider la chaîne, il peut être plus facile de commencer par diviser par nouvelle ligne, de parcourir le résultat et de valider chaque chaîne avec une expression régulière qui divise la chaîne en même temps:

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

Démo: 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/

il cassera votre chaîne en un tableau de mots, puis vous devrez itérer dessus ...

10
gmaliar

Utilisez une expression régulière pour diviser le littéral String par tous les espaces.

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

Exemple de travail http://jsfiddle.net/GJ4bw/

4
Kevin Bowersox

vous pouvez d'abord le diviser par nouveau caractère et le stocker dans un tableau, puis vous pouvez le diviser par espace.

ce qui suit peut donner une référence Lien

1
dev2d