¿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.


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

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


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/


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.