String en JavaScript

String en JavaScript
String en JavaScript

Un objeto String en JavaScript es un constructor de cadenas o una matriz de caracteres.

Estructura String JavaScript

Los valores brutos de las cadenas pueden tener la siguiente forma:

'string text'
"string text"
"中文 español deutsch English हिन्दी العربية português বাংলা русский 日本語 ਪੰਜਾਬੀ 한국어 தமிழ் עברית"

Las cadenas se pueden crear utilizando el objeto global String directamente:

String(thing)

thing

Cualquier valor que queramos convertir en una cadena.

A partir del estándar ECMAScript 2015, es posible crear los llamados literales de plantilla :

`hello world`
`hello!
 world!`
`hello ${who}`
escape `<a>${who}</a>`

Además de los caracteres normales que aparecen, se pueden incluir caracteres especiales pasándolos de contrabando, como se muestra en la siguiente tabla:

CódigoResultado
‎\0Carácter nulo
‎\'‎Comillas simples
‎\"‎Comillas dobles
‎\\‎Barra inclinada invertida
‎\n‎Tipo de letra de nueva línea
‎\r‎Retorno de carro
‎\v‎Espacio de pestaña vertical
‎\t‎Espacio de pestaña (pestaña)
‎\b‎Retroceso
‎\f‎Ir al tipo de letra de la nueva página (avance de formulario)
‎\uXXXX‎Formato de punto de código Unicode
‎\u{X}‎ ... ‎\u{XXXXXX}‎Formato de punto de código Unicode
‎\xXX‎Tipografía latina

A diferencia de otros lenguajes de programación, JavaScript no distingue entre comillas simples y dobles. Por lo tanto, los caracteres de escape anteriores funcionarán independientemente del tipo de comillas que los rodeen.

A veces, el código contendrá algunas cadenas muy largas y, en lugar de tener una línea larga o depender del ajuste de línea en el editor, podemos dividir esas cadenas en varias líneas de código sin afectar el contenido de las cadenas en sí. Hay dos formas de Haz eso.

Podemos usar el operador + para sumar las cadenas de la siguiente manera:

let  longString  =  "Esta es una cadena muy larga que necesita"  + 
                 "para ajustarse a varias líneas porque"  + 
                 "de lo contrario mi código es ilegible." ;

También puede usar la barra invertida \al final de cada línea para indicar que la cadena de texto continuará en la siguiente línea. Pero asegúrese de que no haya espacios ni ningún otro carácter después de la barra invertida (excepto el carácter de nueva línea), o no funcionará. A continuación, se muestra un ejemplo de este método:

let  longString  =  "Esta es una cadena muy larga que necesita \ 
encajar en varias líneas porque \ de lo 
contrario mi código es ilegible." ;

Los dos ejemplos anteriores producirán la misma cadena.

Características generales

Las cadenas son útiles para almacenar datos que representan voz de texto. Las operaciones más comúnmente utilizadas en cadenas son verificar su longitud (a través de la propiedad length), sumar +=+ cadenas usando los operandos, y verificar la existencia o ubicación de subcadenas usando la función indexOf()‎, o extraer esas subcadenas usando la función substring()‎.

Hay dos formas de acceder a los caracteres de una cadena. La primera es utilizar la función charAt()‎:

return 'cat'.charAt(1); // "a"

Otro método que se ha agregado al estándar ECMAScript 5.1 es tratar una cadena como un objeto similar a una matriz, donde los caracteres están asociados con un índice numérico:

return 'cat'[1]; // "a"

Cuando se accede a caracteres usando corchetes, intentar omitir o asignar un valor a esos atributos no funcionará. Estas propiedades no se podrán escribir ni configurar (consulte la página de funciones Object.defineProperty() para obtener más información).

Los desarrolladores de funciones lo utilizan strcmp()‎ para comparar cadenas. En JavaScript, puede utilizar los operadores mayor que y menor que :

var a = 'a';
var b = 'b';
if (a < b) { // true
  console.log(a + ' is less than ' + b);
} else if (a > b) {
  console.log(a + ' is greater than ' + b);
} else {
  console.log(a + ' and ' + b + ' are equal.');
}

Se puede obtener un resultado similar al anterior utilizando la función localeCompare()‎ proporcionada en la copia del objeto String.

Tenga en cuenta que JavaScript diferencia entre objetos Stringy cadenas sin formato (lo mismo se aplica a los objetos BooleanNumber).

Las cadenas definidas por comillas simples o dobles y las cadenas devueltas desde la llamada a la función Stringsin usar una palabra reservada new(es decir, no un constructor) son cadenas primitivas, y JavaScript convierte estos valores primitivos en objetos String automáticamente, lo que permite el uso de funciones String dependientes para la objetarlos. 

Cuando se usa una función (o se intenta acceder a una propiedad) en una cadena sin formato, JavaScript envuelve la cadena sin procesar en un objeto y luego llama a la función (o propiedad) respectiva:

var s_prim = 'foo';
var s_obj = new String(s_prim);

console.log(typeof s_prim); // "string"
console.log(typeof s_obj);  // "object"

Tenga en cuenta que los objetos String en javascript y las cadenas sin procesar dan resultados diferentes cuando se utilizan con una función eval()‎. La cadena sin procesar que se pase a la función se tratará eval como código fuente. Mientras que los objetos se tratan String como otros objetos, el objeto se devolverá. El siguiente ejemplo lo ilustra:

var s1 = '2 + 2' ;              // crea una cadena sin formato 
var s2 = new String( '2 + 2' );  // Crea un objeto de 
console.log(eval(s1));          // 
console.log(eval(s2));        // Cadena 2 + 2

Por estas razones, es posible que el código no funcione cuando encuentra objetos String en lugar de cadenas sin formato, pero a los desarrolladores no les importan estas diferencias. Podemos convertir un objeto Stringa su cadena equivalente en bruto usando la función valueOf()‎:

console.log(eval(s2.valueOf())); // el numero 4

Propiedades constructora String

String.prototype

Esta propiedad permite agregar propiedades que están disponibles para todos los objetos cuyo tipo es  String.

Funciones constructivista String

String.fromCharCode()‎

Cree una cadena de texto utilizando una serie de valores Unicode.

String.fromCodePoint()‎

Cree una cadena de texto utilizando una serie de puntos de código.

String.raw()‎

Crea una cadena de texto a partir de una plantilla sin formato.

Características prototipo de objeto

Las versiones construidas de un constructor  String heredan funciones y propiedades de un objeto String.prototype. Al igual que con todos los constructores, puede realizar cambios en un objeto  prototype en el constructor para que esos cambios se reflejen en todas las instancias del objeto  String.

String.prototype.constructor

Especifica la función que creará el prototipo del objeto String. Consulte la página de funciones Object.prototype.constructorpara obtener más detalles.

String.prototype.length

Devuelve la longitud de la cadena de texto.

Principales funciones

String.prototype.charAt()‎

Devuelve el carácter en el índice especificado.

String.prototype.charCodeAt()

Devuelve el carácter en el índice especificado.

String.prototype.codePointAt()‎

Devuelve un entero positivo que representa el símbolo Unicode en la posición especificada.

String.prototype.concat()

Fusiona el texto existente en dos cadenas de texto y devuelve una nueva cadena de texto.

String.prototype.includes()‎

Averiguar si una cadena contiene otra cadena.

String.prototype.endsWith()

Averiguar si una cadena termina con otros caracteres de cadena.

String.prototype.indexOf()‎

Devuelve el índice dentro de un objeto String que llama a la función y que es la posición de la primera coincidencia del valor especificado para esa función, o -1 si no se encuentra.

String.prototype.lastIndexOf()‎

Devuelve el índice dentro de un objeto String que llama a la función y que es otra posición que coincide con el valor especificado para esa función, o -1 si no se encuentra.

String.prototype.localeCompare()‎

Devuelve un número que indica si la cadena de texto a la que se hace referencia está antes, después o con la cadena dada en un orden específico.

String.prototype.match()‎

Haga coincidir una expresión regular con una cadena.

String.prototype.normalize()‎

Devuelve el formulario de normalización Unicode para la cadena de texto respectiva.

String.prototype.padEnd()‎

Complete la cadena actual al final agregando la cadena dada para crear una nueva cadena de cierta longitud.

String.prototype.padStart()‎

Rellene la cadena actual desde el principio agregando la cadena dada para crear una nueva cadena de cierta longitud.

String.prototype.repeat()‎

Devuelve una cadena que contiene una repetición de una cadena durante un número específico de veces.

String.prototype.replace()‎

Busca una coincidencia entre una expresión regular y una cadena y coloca una subcadena en lugar de la cadena correspondiente.

String.prototype.search()‎

Encuentra una coincidencia para la expresión regular en la cadena dada.

String.prototype.slice()‎

Extraiga una sección de la cadena de texto y devuélvala.

String.prototype.split()‎

Divida un objeto String en una matriz de cadenas de texto.

String.prototype.startsWith()‎

Determina si la cadena de texto comienza con otro carácter de cadena de texto.

String.prototype.substr()‎

Devuelve el número especificado de caracteres en la cadena de texto desde una ubicación específica.

String.prototype.substring()‎

Devuelve caracteres entre dos índices especificados en la cadena de texto.

String.prototype.toLocaleLowerCase()‎

Convertirá los caracteres de la cadena a minúsculas correspondientes a la configuración regional actual. Esta función devolverá el mismo resultado que la función toLowerCase()‎ en la mayoría de los idiomas.

String.prototype.toLocaleUpperCase()‎

Convertirá los caracteres de la cadena a mayúsculas de acuerdo con la configuración regional actual. Esta función devolverá el mismo resultado que la función toUpperCase()‎ en la mayoría de los idiomas.

String.prototype.toLowerCase()‎

Convierte la cadena a minúsculas.

String.prototype.toString()‎

Devuelve una cadena que representa el objeto, que es una redefinición de la función  Object.prototype.toString.

String.prototype.toUpperCase()‎

Convierte la cadena a mayúsculas.

String.prototype.trim()‎

Elimina los espacios al principio y al final de la cadena de texto.

String.prototype.trimLeft()

Elimina los espacios al comienzo de la cadena de texto. Esta función no está estandarizada y no se recomienda su uso.

String.prototype.trimRight()‎

Elimina los espacios al final de la cadena de texto. Esta función no está estandarizada y no se recomienda su uso.

String.prototype.valueOf()‎

Devuelve el valor primitivo del objeto especificado. Es una redefinición de la función  Object.prototype.valueOf.

Funciones de las etiquetas HTML

Estas funciones tienen usos limitados, solo admiten un conjunto parcial de etiquetas y propiedades HTML y son compatibles con la mayoría de los navegadores, aunque recientemente se convirtieron en parte del estándar ECMAScript. Estas funciones nunca se recomiendan y no las mencionaremos aquí.

Ejemplos y aplicaciones en código

La función se puede utilizar String como una alternativa más flexible y práctica a la función toString()‎, porque opera sobre valores null undefined símbolos Symbol por ejemplo:

var outputStrings = [];
for (var i = 0, n = inputValues.length; i < n; ++i) {
  outputStrings.push(String(inputValues[i]));
}

Soporte de navegadores

CaracterísticaChromeFirefoxIEOperaSafari
Soporte básico

Consulte la página de la propiedad y función de cada objeto para String obtener detalles sobre la compatibilidad del navegador.