2010-08-25 25 views
45

Digamos que tengo test_23 y quiero eliminar test_.¿Cómo eliminar parte de una cadena?

¿Cómo puedo hacer eso?

El prefijo anterior _ puede cambiar.

+0

tal vez debería echar un vistazo a las expresiones regulares [en] JavaScript (http://www.w3schools.com/jsref/jsref_obj_regexp.asp) – Barranka

Respuesta

88

Mi forma favorita de hacer esto es "dividir y hacer estallar":

var str = "test_23"; 
alert(str.split("_").pop()); 
// -> 23 

var str2 = "adifferenttest_153"; 
alert(str2.split("_").pop()); 
// -> 153 

split()
pop()

+1

+1 Me gusta esto. – Marc

+11

El programador en C se encoge por la cantidad de objetos creados y destruidos en esta operación simple de división/pop :) Probablemente: una matriz, 2 cadenas, otra matriz, otra cadena. – Gui13

+6

@xgbi: sí, los desarrolladores de JavaScript y C tienen filosofías bastante diferentes, aunque ;-) –

26

Asumiendo que su cadena comienza siempre con 'test_':

var str = 'test_23'; 
alert(str.substring('test_'.length)); 
+3

¿Qué pasa si no comienza con la prueba? – NullVoxPopuli

+4

Vea la respuesta de Andy E. – BoltClock

6
string = "test_1234"; 
alert(string.substring(string.indexOf('_')+1)); 

Incluso wor ks si la cadena no tiene subrayado. Pruébelo en http://jsbin.com/

+4

Esto tiene menos sobrecarga, pero más código que la respuesta de Andy E. Ambos funcionan, pero prefiero este método. – palswim

14

La manera más fácil que pienso es:

var s = yourString.replace(/.*_/g,"_");