preloader

Cadenas de Caracteres String JavaScript

Cadenas de Caracteres

En JavaScript, los datos de tipo texto se almacenan como cadenas de caracteres. No existe un tipo de dato separado para caracteres individuales.

Internamente, las cadenas siempre se representan en UTF-16, independientemente de la codificación de la página.

Comillas

Las cadenas pueden delimitarse usando comillas simples, comillas dobles o backticks (acento grave):

				
					let single = 'comillas simples';
let double = "comillas dobles";
let backticks = `backticks`;

				
			

Las comillas simples y dobles son prácticamente equivalentes. Los backticks permiten la inserción de expresiones dentro de la cadena usando ${…}:

				
					function sum(a, b) {
  return a + b;
}
alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.

				
			

Otra ventaja de los backticks es que permiten extender una cadena en múltiples líneas:

				
					let guestList = `Invitados:
 * Juan
 * Pedro
 * María
`;
alert(guestList); // lista de invitados en varias líneas

				
			

Las comillas simples y dobles no funcionan de la misma manera:

				
					let guestList = "Invitados:  // Error: Unexpected token ILLEGAL
  * Juan";
				
			

Las comillas simples y dobles provienen de épocas en que no se consideraban las múltiples líneas. Los backticks son más recientes y versátiles.

Además, los backticks permiten especificar una «función de plantilla» antes del primer backtick. La sintaxis es func\string`. La función func` es llamada automáticamente y puede procesar el string y las expresiones insertadas.

Caracteres Especiales

Es posible crear cadenas de múltiples líneas con comillas simples utilizando el carácter de nueva línea \n:

				
					let guestList = 'Invitados:\n * Juan\n * Pedro\n * María';
alert(guestList); // lista de invitados en múltiples líneas
				
			

Por ejemplo, estas dos líneas son equivalentes pero están escritas de manera diferente:

				
					let str1 = "Hello\nWorld"; // dos líneas usando el símbolo de nueva línea
let str2 = `Hello
World`; // dos líneas usando nueva línea y backticks

				
			

Ambas cadenas son iguales:

				
					alert(str1 == str2); // true
				
			

Otros caracteres especiales son menos comunes:

CarácterDescripción
\nNueva línea
\rRetorno de carro
‘, «, `Comillas
\Barra invertida
\tTabulación
\b, \f, \vRetroceso, avance de formulario, tabulación vertical

Los caracteres especiales comienzan con la barra invertida \. Para mostrar una barra invertida real, hay que duplicarla:

				
					alert(`La barra invertida: \\`); // La barra invertida: \
				
			

Las comillas escapadas `’, «, « se usan para insertar una comilla en una cadena delimitada por el mismo tipo de comilla:

				
					alert('¡Yo soy la \'morsa\'!'); // ¡Yo soy la 'morsa'!
				
			

Para evitar escapado de comillas, se pueden usar comillas dobles o backticks:

				
					alert("¡Yo soy la 'morsa'!"); // ¡Yo soy la 'morsa'!
				
			

Además de estos caracteres, también hay una notación especial para códigos Unicode \u…, aunque rara vez se usa.

Longitud de la Cadena

La propiedad length contiene la longitud de la cadena:

				
					alert(`Mi\n`.length); // 3

				
			

El carácter \n cuenta como uno solo, por lo que la longitud total es 3.

Acceso a Caracteres

Para acceder a un carácter en una posición específica, se pueden usar corchetes [] o el método str.at(pos). La primera posición es cero:

				
					let str = `Hola`;
alert(str[0]); // H
alert(str.at(0)); // H
alert(str[str.length - 1]); // a
alert(str.at(-1)); // a

				
			

El método .at(pos) permite posiciones negativas, contando desde el final de la cadena:

				
					let str = `Hola`;
alert(str[-2]); // undefined
alert(str.at(-2)); // l
				
			

También se puede iterar sobre los caracteres con for..of:

				
					for (let char of 'Hola') {
  alert(char); // H, o, l, a
}

				
			

Inmutabilidad de las Cadenas

Las cadenas en JavaScript no pueden ser modificadas directamente:

				
					let str = 'Hola';
str[0] = 'h'; // error
alert(str[0]); // no funciona
				
			

Para modificar una cadena, se debe crear una nueva cadena y asignarla:

				
					let str = 'Hola';
str = 'h' + str[1] + str[2] + str[3]; // reemplaza la cadena
alert(str); // hola

				
			

Cambio de Capitalización

Los métodos toLowerCase() y toUpperCase() cambian los caracteres a minúscula y mayúscula respectivamente:

				
					alert('Interfaz'.toUpperCase()); // INTERFAZ
alert('Interfaz'.toLowerCase()); // interfaz
alert('Interfaz'[0].toLowerCase()); // 'i'

				
			

Búsqueda de Subcadenas

Hay varias formas de buscar subcadenas en una cadena:

str.indexOf

Busca una subcadena en str, comenzando desde la posición pos, y retorna la posición de la coincidencia o -1 si no se encuentra:

				
					let str = 'Widget con id';
alert(str.indexOf('Widget')); // 0
alert(str.indexOf('widget')); // -1
alert(str.indexOf('id')); // 1
alert(str.indexOf('id', 2)); // 11

				
			

Para encontrar todas las ocurrencias, se puede usar un bucle:

				
					let str = 'Astuto como un zorro, fuerte como un buey';
let target = 'como';
let pos = 0;
while (true) {
  let foundPos = str.indexOf(target, pos);
  if (foundPos == -1) break;
  alert(`Encontrado en ${foundPos}`);
  pos = foundPos + 1;
}

				
			

También se puede escribir de forma más concisa:

				
					let str = 'Astuto como un zorro, fuerte como un buey';
let target = "como";
let pos = -1;
while ((pos = str.indexOf(target, pos + 1)) != -1) {
  alert(pos);
}

				
			

Para modificar una cadena, se debe crear una nueva cadena y asignarla:

				
					let str = 'Astuto como un zorro, fuerte como un buey';
let target = "como";
let pos = -1;
while ((pos = str.indexOf(target, pos + 1)) != -1) {
  alert(pos);
}

				
			

str.lastIndexOf

Busca desde el final de la cadena hacia el comienzo:

				
					let str = "Widget con id";
alert(str.lastIndexOf("Widget")); // 0

				
			

str.includes

Devuelve true o false si str contiene la subcadena substr:

				
					alert('Widget con id'.includes('Widget')); // true
alert('Hola'.includes('Adiós')); // false
alert('Midget'.includes('id')); // true
alert('Midget'.includes('id', 3)); // false

				
			

Resumen

Hemos cubierto el trabajo con cadenas de caracteres en JavaScript, incluyendo comillas, caracteres especiales, longitud de cadena, acceso a caracteres, inmutabilidad, cambio de capitalización, búsqueda de subcadenas, obtención de subcadenas y comparación de cadenas.

Related Post

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *