Eliminar el Primer Carácter en JavaScript: Guía Rápida

Primero lo básico: ¿qué son los strings?
Antes de meternos en faena, déjame contarte qué son los strings en JavaScript. Un string es básicamente una cadena de texto - cualquier cosa que pongas entre comillas. Es uno de esos tipos de datos que usas todo el tiempo sin darte cuenta.
let saludo = "Hola, gente!";
console.log(typeof saludo); // "string"
console.log(saludo.length); // 12
Lo importante es que los strings son inmutables, lo que significa que una vez que los creas, no puedes cambiarlos. Pero no te preocupes - JavaScript tiene un montón de métodos para trabajar con ellos y crear strings nuevos con las modificaciones que necesites.
Si estás empezando con JavaScript, dominar la manipulación de strings es fundamental. Los vas a usar para todo: mostrar mensajes, procesar datos de formularios, trabajar con APIs... la lista es infinita.
¿Por qué querrías eliminar el primer carácter?
Te voy a ser honesto: al principio esto me parecía una tarea súper específica, hasta que me topé con casos reales donde lo necesitaba constantemente:
- Limpiando datos de APIs: A veces los datos vienen con prefijos raros que necesitas quitar
- Procesando hashtags: Cuando tienes "#JavaScript" pero solo quieres "JavaScript"
- Manejando comandos: Como cuando el usuario escribe "+agregar tarea" y necesitas extraer solo "agregar tarea"
- URLs y rutas: Para quitar esa barra inicial molesta
- Códigos de país: Eliminando prefijos de números telefónicos
En mi experiencia, es uno de esos trucos que una vez que lo aprendes, empiezas a usarlo en todas partes.
Los métodos que realmente funcionan
JavaScript te da varias formas de hacer esto, pero te voy a enseñar las dos que uso siempre: substring() y slice(). Ambas hacen el trabajo perfectamente y no tocan el string original.
Mi favorito: substring()
El método substring(indexStart, indexEnd) es súper directo. Le dices dónde empezar y dónde terminar, y él se encarga del resto.
Para eliminar el primer carácter, simplemente empiezas desde la posición 1 (recuerda que JavaScript cuenta desde 0):
let miString = "#Ejemplo";
let nuevoString = miString.substring(1);
console.log(nuevoString); // "Ejemplo"
let otroString = "JavaScript";
console.log(otroString.substring(1)); // "avaScript"
Una cosa que me gusta de substring() es que maneja muy bien los casos extremos. Si tu string está vacío o tiene un solo carácter, no explota - simplemente te devuelve un string vacío:
let vacio = "";
console.log(vacio.substring(1)); // ""
let unCaracter = "A";
console.log(unCaracter.substring(1)); // ""
La alternativa: slice()
slice(beginIndex, endIndex) hace básicamente lo mismo, pero tiene algunos trucos bajo la manga. Lo uso cuando necesito más flexibilidad:
let miString = "*Test";
let resultado = miString.slice(1);
console.log(resultado); // "Test"
let lenguaje = "Python";
console.log(lenguaje.slice(1)); // "ython"
Al igual que substring(), slice() es súper seguro con strings vacíos:
let textoVacio = "";
console.log(textoVacio.slice(1)); // ""
let letra = "X";
console.log(letra.slice(1)); // ""
¿Substring o slice? La eterna pregunta
Para el caso específico de quitar el primer carácter, ambos funcionan exactamente igual. Pero hay algunas diferencias que vale la pena conocer:
-
Números negativos:
- slice() acepta números negativos y los interpreta como posiciones desde el final
- substring() trata los números negativos como ceros
let texto = "ejemplo"; console.log(texto.slice(-3)); // "plo" console.log(texto.substring(-3)); // "ejemplo" (trata -3 como 0)
-
Argumentos al revés:
- substring() intercambia automáticamente los argumentos si el primero es mayor que el segundo
- slice() simplemente devuelve un string vacío
let data = "12345"; console.log(data.substring(3, 1)); // "23" (igual que substring(1, 3)) console.log(data.slice(3, 1)); // ""
Honestamente, para quitar el primer carácter, usa el que más te guste. Yo tiendo a usar slice() porque me parece más intuitivo, pero es pura preferencia personal.
Casos reales donde lo uso
Te voy a mostrar algunos ejemplos de la vida real donde esto me ha salvado:
Ejemplo 1: Limpiando hashtags
function limpiarHashtag(tag) {
if (tag && tag.startsWith("#")) {
return tag.substring(1);
// O: return tag.slice(1);
}
return tag;
}
let hashtag = "#React";
let textoLimpio = limpiarHashtag(hashtag);
console.log(textoLimpio); // "React"
console.log(limpiarHashtag("NodeJS")); // "NodeJS" (no empieza con #)
Ejemplo 2: Procesando comandos simples
function procesarComando(entrada) {
if (!entrada) return { comando: null, valor: null };
const comandoChar = entrada.charAt(0);
const valor = entrada.slice(1); // O substring(1)
switch (comandoChar) {
case '+':
return { comando: "añadir", valor };
case '-':
return { comando: "eliminar", valor };
default:
return { comando: "desconocido", valor: entrada };
}
}
let resultadoComando = procesarComando("+Nuevo Producto");
console.log(resultadoComando); // { comando: "añadir", valor: "Nuevo Producto" }
let otroResultado = procesarComando("-Viejo Item");
console.log(otroResultado); // { comando: "eliminar", valor: "Viejo Item" }
Ejemplo 3: Normalizando números de teléfono
function normalizarTelefono(numero) {
if (numero && numero.startsWith("0")) {
return numero.slice(1);
}
return numero;
}
console.log(normalizarTelefono("0123456789")); // "123456789"
console.log(normalizarTelefono("123456789")); // "123456789"
Cuando las cosas salen mal (y cómo evitarlo)
Ojo, hay algunos casos que pueden hacer que tu código explote si no los manejas bien:
-
Strings vacíos: Por suerte, tanto substring(1) como slice(1) manejan esto perfectamente:
let strVacio = ""; console.log(strVacio.substring(1)); // "" console.log(strVacio.slice(1)); // ""
-
Un solo carácter: También se maneja bien, devuelve un string vacío:
let strUnico = "A"; console.log(strUnico.substring(1)); // "" console.log(strUnico.slice(1)); // ""
-
Variables null o undefined: Aquí es donde las cosas se ponen feas si no tienes cuidado:
let textoNulo = null; // textoNulo.slice(1); // Esto lanzaría un TypeError // Mi solución: Validar siempre function quitarPrimerCaracterSeguro(str) { if (typeof str === 'string' && str.length > 0) { return str.slice(1); } return str; // O devolver "", o manejar el error como sea apropiado } console.log(quitarPrimerCaracterSeguro(textoNulo)); // null console.log(quitarPrimerCaracterSeguro("Hola")); // "ola" console.log(quitarPrimerCaracterSeguro("")); // "" console.log(quitarPrimerCaracterSeguro(undefined)); // undefined
En mi experiencia, siempre es mejor validar antes de manipular, especialmente si los datos vienen de fuentes externas como APIs o formularios.
Otros trucos con strings que uso a diario
Ya que estamos hablando de strings, te cuento algunos métodos que uso constantemente:
- toUpperCase() / toLowerCase(): Para cambiar entre mayúsculas y minúsculas
- trim() / trimStart() / trimEnd(): Eliminar espacios molestos
- charAt(index) / charCodeAt(index): Obtener caracteres específicos
- includes(): Verificar si contiene algo
- startsWith() / endsWith(): Verificar inicio y final
- replace() / replaceAll(): Reemplazar texto
- split(): Convertir a array
- padStart() / padEnd(): Rellenar con caracteres
Dominar estos métodos te va a hacer la vida mucho más fácil cuando trabajes con texto en JavaScript.
Mi reflexión final
Eliminar el primer carácter de un string es una de esas tareas que parecen súper simples, pero que aparecen más seguido de lo que piensas. Lo importante es conocer las herramientas (substring(1) y slice(1)) y saber cuándo usar cada una.
Mis consejos basados en experiencia:
- Para esta tarea específica: Usa slice(1) o substring(1) - son prácticamente iguales
- Recuerda la inmutabilidad: Los métodos devuelven strings nuevos, no modifican el original
- Siempre valida: Especialmente si los datos vienen de fuentes externas
- Sé descriptivo: Si lo usas mucho, créa una función con un nombre claro
- Conoce tus herramientas: JavaScript tiene un arsenal increíble para manipular strings
Con estos trucos en tu arsenal, vas a poder manejar cualquier manipulación de texto que se te cruce. ¿Tienes algún caso de uso interesante para eliminar el primer carácter? Me encantaría escucharlo.
Comentarios
Posts relacionados

Map vs forEach en JavaScript: Cuándo y Cómo Utilizarlos
Diferencias entre map y forEach en JavaScript, con ejemplos prácticos y casos de uso

¿Qué son las Expresiones Regulares? Guía completa
Domina las expresiones regulares (regex) desde cero. Aprende su sintaxis, patrones comunes y casos de uso prácticos con ejemplos detallados.