2009-02-21 11 views
72

¿Cuál sería la forma más limpia de hacer esto que funcionaría tanto en IE como en Firefox?Obtenga todo después del guión en una cadena en javascript

Mi cadena tiene el siguiente aspecto: SomeText-20202

Ahora el 'SomeText' y el entero después del guión puede ser de longitud variable.

¿Debo simplemente usar subcadena e índice de o es de las otras maneras?

Respuesta

136

Cómo me gustaría hacer esto:

// function you can use: 
function getSecondPart(str) { 
    return str.split('-')[1]; 
} 
// use the function: 
alert(getSecondPart("sometext-20202")); 
+25

¿No vale la pena mencionar que esta función no funcionará si la cadena es 'sometext-20202-303'? –

+10

@IstiaqueAhmed sería si la pregunta no era específicamente sobre un formato muy específico: "Mi cadena se ve así: sometext-20202" – artlung

+0

La pregunta tenía 'obtener todo después del guión en una cadena en javascript' que, en este caso, fallaría. –

12
var the_string = "sometext-20202"; 
var parts = the_string.split('-', 2); 

// After calling split(), 'parts' is an array with two elements: 
// parts[0] is 'sometext' 
// parts[1] is '20202' 

var the_text = parts[0]; 
var the_num = parts[1]; 
0

utilizar una expresión regular de la forma: \ w- \ d + donde un \ w representa una palabra y \ d representa un dígito. No funcionarán de la caja, así que juega. Pruebe this.

4

AFAIK, tanto substring() como indexOf() son compatibles tanto con Mozilla como con IE. Sin embargo, tenga en cuenta que es posible que substr() no sea compatible con las versiones anteriores de algunos navegadores (especialmente Netscape/Opera).

Tu publicación indica que ya sabes cómo hacerlo utilizando substring() y indexOf(), por lo que no estoy publicando un ejemplo de código.

+0

Esto es realmente una solución mejor que dividir, dependiendo de su aplicación, porque si tiene más de uno, puede obtener consecuencias no deseadas. – trevorgrayson

+11

string.substring (string.indexOf ('-') + 1) – trevorgrayson

+2

@trevorgrayson esa es la mejor respuesta. – chiliNUT

22

Una solución prefiero sería:

var str = 'sometext-20202', 
    slug = str.split('-').pop(); 

Dónde slug sería el resultado de su

0
var testStr = "sometext-20202" 
var splitStr = testStr.substring(testStr.indexOf('-') + 1); 
Cuestiones relacionadas