2011-05-20 9 views
6

Javascript:¿Cómo divido esta cadena con JavaScript?

var string = '(37.961523, -79.40918)'; 

//remove brackets: replace or regex? + remove whitespaces 

array = string.split(','); 

var split_1 = array[0]; 

var split_2 = array[1]; 

Salida:

var split_1 = '37.961523'; 

var split_2 = '-79.40918'; 

¿Debo usar string.replace('(', '').replace(')', '').replace(/\s/g, ''); o expresiones regulares?

+2

si este formato NO va a cambiar, regex es definitivamente una exageración. – asgs

+2

¿cuál es la pregunta? lo que tienes funciona –

Respuesta

8

Uso

string.slice(1, -1).split(", "); 
+2

¡Gracias! Definitivamente se ve más limpio: D –

1

Se puede utilizar una expresión regular para extraer los dos números a la vez.

var string = '(37.961523, -79.40918)'; 
var matches = string.match(/-?\d*\.\d*/g); 
1

Es probable que desee utilizar expresiones regulares en un caso como este:

str.match(/-?\d+(\.\d+)?/g); // [ '37.961523', '-79.40918' ]

EDITAR fijo para abordar tema señaló en el comentario a continuación

+0

Su expresión regular fallaría para cualquier número entero menor que 10 y mayor que -10. –

0

Aquí es otro enfoque :

Si el () eran [] tendrías JSON válido. Así que lo que podría hacer es o bien cambiar el código que está generando las coordenadas para producir [] en lugar de (), o sustituirlos por:

str = str.replace('(', '[').replace(')', ']') 

continuación, puede utilizar JSON.parse (también disponible como external library) para crear una matriz que contiene estas coordenadas, ya analizadas como números:

var coordinates = JSON.parse(str); 
Cuestiones relacionadas