¿Cómo quitar parte de una cuerda?

Respuestas:

143

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 () divide una cadena en una matriz de cadenas utilizando una cadena de separación especificada.
pop () elimina el último elemento de una matriz y devuelve ese elemento.

Andy E
fuente
23
El programador de C que hay en mí se encoge ante la cantidad de objetos creados y destruidos en esta simple operación de división / extracción :) Probablemente: una matriz, 2 cadenas, otra matriz, otra cadena.
Gui13
11
@xgbi: sí, los desarrolladores de JavaScript y C tienen filosofías bastante diferentes ;-)
Andy E
3
Podría agregar a su respuesta la posibilidad de usar alert(str.split("_")[1]);ya que .splitcrea una matriz con dos elementos, [0]antes del "_"y [1]después. Esto era realmente lo que estaba buscando, pero tu respuesta me ayudó a llegar ^^
Fernando Silva
1
@FernandoSilva Entonces, digamos que si hubiera dos "_" o más, obtendríamos una matriz de 3 elementos y podríamos usar / eliminar la tercera también, ¿verdad? Por cierto, +1. Exactamente lo que estaba buscando.
The Light Sabrix
@TheLightSabrix echa un vistazo a cómo funciona, es mucho más fácil que tratar de explicarlo en texto. jsbin.com/keleguzacu/edit?js,console
Fernando Silva
41

Suponiendo que su cadena siempre comienza con 'test_':

var str = 'test_23';
alert(str.substring('test_'.length));
BoltClock
fuente
5
¿y si no comienza con la prueba?
NullVoxPopuli
use replace pero eso no funciona si hay múltiples ocurrencias. str.replace ("prueba_", ""); devolverá una nueva cadena donde se eliminan todas las ocurrencias de "test_", por lo que si solo se garantiza una ocurrencia, entonces debería estar bien. Sin embargo, si hay varios, usaría str = str.substring (0, str.indexOf ("test_)" + str.substring (str.indexOf ("test_") + 5, str.length); lo sé es una publicación antigua pero, si alguien la encuentra, podría ayudar al menos a una persona en algún lugar.
George Xavier
22

Si desea eliminar parte de la cuerda

let str = "test_23";
str.replace("test_", "");
// 23

Si desea reemplazar parte de la cadena

let str = "test_23";
str.replace("test_", "student-");
// student-23
seudónimo
fuente
19

Creo que la forma más fácil es:

var s = yourString.replace(/.*_/g,"_");
Yassir Ennazk
fuente
9
string = "test_1234";
alert(string.substring(string.indexOf('_')+1));

Incluso funciona si la cadena no tiene guión bajo. Pruébelo en http://jsbin.com/

gawi
fuente
4
Esto tiene menos gastos generales, pero más código que la respuesta de Andy E. Ambos funcionan, pero prefiero este método.
palswim
1
string = "removeTHISplease";
result = string.replace('THIS','');

Creo que reemplazar hace lo mismo que una función propia. Para mí esto funciona.

Stefan Stanchev
fuente
Las respuestas de solo código casi siempre se pueden mejorar agregando alguna explicación de cómo y por qué funcionan. El formato es importante.
Jason Aller
Al menos funciona a diferencia de los que están en la parte superior que también usan reemplazar.
TroyD
0

Quería eliminar "www."de un href, así que hice esto:

const str = "https://www.example.com/path";

str.split("www.").join("");

// https://example.com/path
Franco Méndez
fuente