Búsqueda de sitios web

javascript - ¿Cómo eliminar texto de una cadena?


Tengo una cadena data-123.

¿Cómo puedo eliminar data- de la cadena dejando el 123?

Respuesta #1

var ret = "data-123".replace('data-','');
console.log(ret);   //prints: 123

Documentos.

Para descartar todas las ocurrencias, use:

var ret = "data-123".replace(/data-/g,'');

PD: La función replace devuelve una nueva cadena y deja la cadena original sin cambios, así que usa el valor devuelto por la función después de la llamada a replace().

Respuesta #2

Esto no tiene nada que ver con jQuery. Puedes usar la función replace de JavaScript para esto:

var str = "data-123";
str = str.replace("data-", "");

También puedes pasar una expresión regular a esta función. En el siguiente ejemplo, reemplazaría todo excepto los números:

str = str.replace(/[^0-9\.]+/g, "");

Respuesta #3

Puedes usar "data-123".replace('data-','');, como se mencionó, pero como replace() solo reemplaza la PRIMERA instancia del texto coincidente, si tu cadena fuera algo como "data-123data-" entonces

"data-123data-".replace('data-','');

solo reemplazará el primer texto coincidente. Y tu salida será "123data-"

DEMOSTRACIÓN

Entonces, si quieres que todas las coincidencias de texto se reemplacen en una cadena, debes usar una expresión regular con la bandera g así:

"data-123data-".replace(/data-/g,'');

Y tu salida será "123"

DEMO2

Respuesta #4

Puedes usar slice(), si sabes de antemano cuántos caracteres necesitan ser cortados de la cadena original. Devuelve los caracteres entre un punto de inicio dado y un punto final.

string.slice(start, end);

Aquí hay algunos ejemplos que muestran cómo funciona:

var mystr = ("data-123").slice(5); // This just defines a start point so the output is "123"
var mystr = ("data-123").slice(5,7); // This defines a start and an end  so the output is "12"

Demostración

Respuesta #5

El simple JavaScript ordinario será suficiente; jQuery no es necesario para una tarea tan sencilla:

var myString = "data-123";
var myNewString = myString.replace("data-", "");

Ver: la documentación de .replace() en MDN para información adicional y uso.

Respuesta #6

1- Si está la secuencia en tu cadena:

let myString = "mytest-text";
let myNewString = myString.replace("mytest-", "");

la respuesta es texto

2- si quieres eliminar los primeros 3 caracteres:

"mytest-text".substring(3);

la respuesta es est-text

Respuesta #7

Ej:-

var value="Data-123";
var removeData=value.replace("Data-","");
alert(removeData);

Espero que esto funcione para ti.

Respuesta #8

Rendimiento

Hoy 2021.01.14 realizo pruebas en MacOs HighSierra 10.13.6 en Chrome v87, Safari v13.1.2 y Firefox v84 para las soluciones elegidas.

Resultados

Para todos los navegadores

  • las soluciones Ba, Cb y Db son rápidas/la más rápida para cadenas largas
  • las soluciones Ca, Da son rápidas/la más rápida para cadenas cortas
  • las soluciones Ab y E son lentas para cadenas largas
  • las soluciones Ba, Bb y F son lentas para cadenas cortas

Detalles

Realizo 2 casos de prueba:

  • cadena corta - 10 caracteres - puedes ejecutarla AQUÍ
  • cadena larga - 1 000 000 de caracteres - puedes ejecutarlo AQUÍ

El siguiente fragmento presenta soluciones Aa Ab Ba Bb Ca Cb Da Db E F

// https://stackoverflow.com/questions/10398931/how-to-strToRemove-text-from-a-string

// https://stackoverflow.com/a/10398941/860099
function Aa(str,strToRemove) {
  return str.replace(strToRemove,'');
}

// https://stackoverflow.com/a/63362111/860099
function Ab(str,strToRemove) {
  return str.replaceAll(strToRemove,'');
}

// https://stackoverflow.com/a/23539019/860099
function Ba(str,strToRemove) {
  let re = strToRemove.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // regexp escape char
  return str.replace(new RegExp(re),'');
}

// https://stackoverflow.com/a/63362111/860099
function Bb(str,strToRemove) {
  let re = strToRemove.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // regexp escape char
  return str.replaceAll(new RegExp(re,'g'),'');
}

// https://stackoverflow.com/a/27098801/860099
function Ca(str,strToRemove) {
  let start = str.indexOf(strToRemove);
  return str.slice(0,start) + str.slice(start+strToRemove.length, str.length);
}

// https://stackoverflow.com/a/27098801/860099
function Cb(str,strToRemove) {
  let start = str.search(strToRemove);
  return str.slice(0,start) + str.slice(start+strToRemove.length, str.length);
}

// https://stackoverflow.com/a/23181792/860099
function Da(str,strToRemove) {
  let start = str.indexOf(strToRemove);
  return str.substr(0, start) + str.substr(start + strToRemove.length);
}

// https://stackoverflow.com/a/23181792/860099
function Db(str,strToRemove) {
  let start = str.search(strToRemove);
  return str.substr(0, start) + str.substr(start + strToRemove.length);
}

// https://stackoverflow.com/a/49857431/860099
function E(str,strToRemove) {
  return str.split(strToRemove).join('');
}

// https://stackoverflow.com/a/45406624/860099
function F(str,strToRemove) {
    var n = str.search(strToRemove);
    while (str.search(strToRemove) > -1) {
        n = str.search(strToRemove);
        str = str.substring(0, n) + str.substring(n + strToRemove.length, str.length);
    }
    return str;
}


let str = "data-123";
let strToRemove = "data-";

[Aa,Ab,Ba,Bb,Ca,Cb,Da,Db,E,F].map( f=> console.log(`${f.name.padEnd(2,' ')} ${f(str,strToRemove)}`));
This shippet only presents functions used in performance tests - it not perform tests itself!

Y aquí están los resultados de ejemplo para Chrome

Respuesta #9

str.split('Yes').join('No'); 

Esto reemplazará todas las ocurrencias de esa cadena específica en la cadena original.

Respuesta #10

Esta pequeña función que hice siempre ha funcionado para mí :)

String.prototype.deleteWord = function (searchTerm) {
    var str = this;
    var n = str.search(searchTerm);
    while (str.search(searchTerm) > -1) {
        n = str.search(searchTerm);
        str = str.substring(0, n) + str.substring(n + searchTerm.length, str.length);
    }
    return str;
}

// Use it like this:
var string = "text is the cool!!";
string.deleteWord('the'); // Returns text is cool!!

Sé que no es lo mejor, pero siempre me ha funcionado :)

Respuesta #11

Estaba acostumbrado al método String.Remove de C# (Sharp). En Javascript, no hay una función remove para cadenas, pero sí existe la función substr. Puedes usar la función substr una o dos veces para eliminar caracteres de una cadena. Puedes crear la siguiente función para eliminar caracteres desde el índice de inicio hasta el final de la cadena, tal como el primer sobrecargado del método String.Remove(int startIndex) en C#:

function Remove(str, startIndex) {
    return str.substr(0, startIndex);
}

y/o también puedes crear la siguiente función para eliminar caracteres en el índice inicial y la cantidad, al igual que la segunda sobrecarga del método String.Remove(int startIndex, int count) en C#:

function Remove(str, startIndex, count) {
    return str.substr(0, startIndex) + str.substr(startIndex + count);
}

¡y luego puedes usar estas dos funciones o una de ellas según tus necesidades!

Ejemplo:

alert(Remove("data-123", 0, 5));

Salida: 123

Respuesta #12

Actualización 2024 :

Hay muchas formas de resolver este problema, pero creo que esta es la más simple:

const newString = string.split("data-").pop();
console.log(newString); /// 123

Respuesta #13

Usando match() y Number() para devolver una variable number:

Number(("data-123").match(/\d+$/));

// strNum = 123

Esto es lo que hace la declaración anterior... trabajando de adentro hacia afuera:

  1. str.match(/\d+\$/) - devuelve un arreglo que contiene coincidencias con cualquier cantidad de números al final de str. En este caso, devuelve un arreglo que contiene un único elemento de cadena ['123'].
  2. Number() - lo convierte en un tipo número. Debido a que el array devuelto por .match() contiene un solo elemento, Number() devolverá el número.

Artículos relacionados