Operaciones de cadenas en JavaScript
1. Descripción general
Las cadenas están en casi todas partes en JavaScript cuando procesas datos de entrada del usuario, cuando lees o configuras las propiedades de un objeto DOM, cuando operas cookies, por supuesto. hay más... La parte central de JavaScript proporciona un conjunto de propiedades y métodos para operaciones de cadenas comunes, como dividir cadenas, cambiar el caso de las cadenas, manipular subcadenas, etc.
La mayoría de los navegadores actuales también se benefician del poder de las expresiones regulares, ya que simplifican enormemente muchas tareas de manipulación de cadenas, pero también requieren que superes una curva de aprendizaje algo pronunciada. Aquí, presentamos principalmente algunas operaciones en la propia cadena. Las expresiones regulares se cubrirán en ensayos futuros.
2. Creación de Cadenas
Hay varias formas de crear una cadena. La más sencilla es encerrar un conjunto de caracteres entre comillas, que se pueden asignar a una variable de cadena.
var myStr = "Hello, String!";
Puedes utilizar comillas dobles o comillas simples para incluir la cadena, pero ten en cuenta que el par de comillas que delimitan la cadena deben Son iguales y no se pueden mezclar.
Una declaración como var myString = "Fluffy es un lindo gato."; es ilegal.
Se permiten dos tipos de comillas, lo que simplifica ciertas operaciones, como Un tipo es incrustado en el otro:
document.write("img src='img/logo.jpg' height='30' width='100' alt='Logo'");
Creamos varias cadenas en el script anterior, pero en esencia, no son objetos de cadena reales. Para ser precisos, son valores de tipo cadena. Para crear un objeto de cadena, puede usar la siguiente declaración: var strObj = new. String("Hello, String!");
Utilizando el operador typeof, encontrará que el tipo de myStr anterior es cadena y el tipo de strObj es objeto
If. Si desea saber la longitud de una cadena, utilice su propiedad de longitud: cadena.longitud.
Cómo obtener el carácter en la posición especificada de la cadena: string.charAt(index);
3. Empalme de cadenas
Pregunta:
Concatenar dos o más cadenas en una sola cadena grande
Solución:
Es muy simple, solo usa un "+" para unir las dos cadenas "Agregar":
var longString = "Una pieza " + "más una pieza más.";
Para acumular varias cadenas en una sola cadena, también puedes usar el operador "+=":
var resultado = "";
resultado += "Mi nombre es Anders"
resultado += "y mi edad es 25";
Para agregar un carácter de nueva línea a la cadena, necesita usar el carácter de escape "":
var confirmString = "No ingresó una respuesta al último " +
" question.Enviar formulario de todos modos?";
var confirmValue = confirm(confirmString);
Pero este método solo se puede utilizar para cosas como advertencias y confirmaciones. En situaciones como cuadros de diálogo, si este texto se presenta como contenido HTML, no será válido. En este caso, utilice "br" para reemplazarlo:
var htmlString = "Primera línea de cadena.brSegunda línea de cadena.";
document.write(htmlString);
El objeto String también proporciona el método concat(), que completa la misma función que "+":
string. concat(valor1, valor2, ...)
Sin embargo, el método concat() obviamente no es tan intuitivo y conciso como "+".
4. Accediendo a subcadenas de una cadena
Pregunta:
Obtener una copia de una parte de una cadena.
Solución:
Utilice el método substring() o slice() (NN4+, IE4+). Su uso específico se explica a continuación.
El prototipo de substring() es: string.substring(from, to)
El primer parámetro from especifica la posición inicial de la subcadena en la cadena original (basado en el índice 0 ); el segundo parámetro es opcional. Especifica la posición final de la subcadena en la cadena original (el índice se basa en 0). Si se omite, la subcadena irá a. el final de la cadena original.
¿Qué sucede si el parámetro de es accidentalmente mayor que el parámetro de? JavaScript ajustará automáticamente las posiciones inicial y final de la subcadena, es decir, substring() siempre comienza desde el menor de los dos parámetros y termina con el mayor. Sin embargo, tenga en cuenta que incluye el carácter en la posición inicial, pero no el carácter en la posición final.
var fullString = "Cada perro tiene su día.";
var sección = fullString.substring(0, 4); // la sección es "Siempre". p>
sección = fullString.substring(4, 0); // la sección también es "Ever".
sección = fullString.substring(1, 1); .
sección = fullString.substring(-2, 4); // la sección es "Ever", igual que fullString.substring(0, 4); (inicio, fin)
El parámetro inicio representa la posición inicial de la subcadena. Si es un número negativo, puede entenderse como la posición inicial desde abajo. Por ejemplo, -3 significa comenzar desde abajo. el tercero desde abajo; el parámetro end representa la posición final. Al igual que el inicio, también puede ser un número negativo y su significado también indica el final del penúltimo número. Los parámetros de slice() pueden ser negativos, por lo que es más flexible que substring(), pero menos tolerante. Si el inicio es mayor que el final, devolverá una cadena vacía (ejemplo omitido).
Otro método es substr(), cuyo prototipo es: string.substr(start, length)
El significado de sus parámetros se puede ver en el prototipo, y start significa el inicio. posición, la longitud representa la longitud de la subcadena. El estándar JavaScript desaconseja el uso de este método.
5. Conversión de mayúsculas y minúsculas
Problema:
Hay un cuadro de texto en su página para recibir información ingresada por el usuario, como la ciudad, y luego usted es diferente. El procesamiento se realizará de acuerdo con su ciudad. En este momento, naturalmente se utilizará la comparación de cadenas. Por lo tanto, antes de la comparación, es mejor realizar la conversión de casos, de modo que solo necesite considerar la situación después de la conversión; en los datos de la página, y luego almacenar estos datos en una base de datos, y la base de datos solo acepta caracteres en mayúsculas, en estos casos, todos debemos considerar la conversión de mayúsculas y minúsculas de la cadena;
Solución:
Usar los métodos toLowerCase() y toUpperCase():
var city = "ShanGHai";
city = city .toLowerCase(); // la ciudad ahora es "shanghai".
6. Determina si dos cadenas son iguales
Pregunta:
Por ejemplo, quieres para comparar el valor de entrada del usuario con una cadena conocida
Solución:
Primero convierta todos los valores de entrada del usuario a mayúsculas (o minúsculas) y luego compare:
var nombre = document.form1.txtUserName.value.toLowerCase();
if(nombre == "urname")
{
// las declaraciones van aquí.
}
JavaScript tiene dos operadores de igualdad.
Uno es totalmente compatible con versiones anteriores, el estándar "==". Si los dos tipos de operandos son inconsistentes, realizará automáticamente la conversión de tipos en el operando en algún momento. Considere la siguiente declaración de asignación:
var strA = ". ¡te amo!";
var strB = new String("¡te amo!");
Estas dos variables contienen la misma secuencia de caracteres, pero los tipos de datos son diferentes El primero es una cadena y el segundo es un objeto. Cuando se utiliza el operador "==", JavaScript intentará varias evaluaciones para detectar si los dos serán iguales en determinadas circunstancias. Entonces la siguiente expresión se evalúa como verdadera: strA == strB.
El segundo operador es el "estricto" "===", que no es tan indulgente durante la evaluación y no realiza conversión de tipos. Entonces la expresión strA === strB se evalúa como falsa, aunque ambas variables tienen el mismo valor.
A veces la lógica del código requiere que determines si dos valores no son iguales. Aquí hay dos opciones: "!=" y estricta "!==". a "==" y "===".
Discusión:
"==" y "!=" harán todo lo posible para encontrar coincidencias de valores al evaluar, pero es posible que aún desee hacer una comparación explícita antes de escribir conversiones a "ayudarlos" a hacer su trabajo. Por ejemplo, si desea determinar si el valor de entrada (cadena) de un usuario es igual a un número, puede dejar que "==" lo ayude a completar la conversión de tipo:
if(document.form1.txtAge .value == someNumericVar) { ... }
También puedes convertir por adelantado:
if(parseInt(document.form1.txtAge.value) == someNumericVar) { . .. }
Si está más acostumbrado a los lenguajes de programación fuertemente tipados (como C#, Java, etc.), puede continuar con su hábito (conversión de tipos) aquí, lo que también mejorará la legibilidad del programa.
Algo a lo que debes prestar atención es a la configuración regional del ordenador. Si compara cadenas con "" y "", entonces JavaScript las compara como Unicode, pero obviamente las personas que navegan por la web no leen el texto como Unicode :) En español, por ejemplo, ordenar por tradicional, se ordenará "ch" como un carácter entre "c" y "d". localeCompare() proporciona una manera de utilizar la intercalación de caracteres de la configuración regional predeterminada.
var strings; // La matriz de cadenas que se ordenará, suponiendo que se haya inicializado
strings.sort(function(a,b) { return a.localeCompare(b) } ) ; // Llama al método sort() para ordenar
7. Buscando cadenas
Pregunta:
Determina si una cadena contiene otra cadena.
Solución:
Utilice el método indexOf() de cadena:
strObj.indexOf(subString[, startIndex])
strObj es la cadena a juzgar, subString es la subcadena que se buscará en strObj, startIndex es opcional e indica la posición inicial de la búsqueda (índice basado en 0). Si se omite startIndex, busque desde el principio de strObj, si startIndex si es menor que 0, comienza desde 0. Si startIndex es mayor que el índice máximo, comienza desde el índice máximo.
indexOf() devuelve la posición inicial de subString en strObj. Si no se encuentra, devuelve -1.
En un script, puedes usarlo así:
if(largeString.indexOf(shortString) != -1)
{
// Si está incluido , realice el procesamiento correspondiente;
}
Quizás una cadena contendrá otra cadena más de una vez. En este caso, el segundo parámetro startIndex puede resultar útil. para obtener un El número de veces que una cadena contiene otra cadena:
función countInstances(mainStr, subStr)
{
var count = 0;
var offset = 0;
hacer
{
offset = mainStr.indexOf(subStr, offset);
if(offset != -1)
{
count++;
offset += subStr.length;
}
} while(offset != -1)
recuento de retornos;
}
El objeto de cadena tiene un método correspondiente a indexOf(), lastIndexOf () :
strObj.lastIndexOf(substring[, startindex])
strObj es la cadena a juzgar, subString es la subcadena a buscar en strObj, startIndex es opcional, lo que indica la posición inicial de la búsqueda (índice basado en 0). Si se omite startIndex, la búsqueda será desde el final de strObj. Si startIndex es menor que 0, comenzará desde 0. Si startIndex es mayor que el índice máximo. Comenzará desde el índice máximo. Este método busca de derecha a izquierda y devuelve la última posición de subString en strObj. Si no se encuentra, devuelve -1.
8. Convertir entre valores Unicode y caracteres en cadenas
Pregunta:
Obtener el valor de codificación Unicode de un carácter y viceversa.
Solución:
Para obtener la codificación Unicode de un carácter, puedes utilizar el método string.charCodeAt(index), que se define como:
strObj .charCodeAt(index )
index es la posición del carácter especificado en el objeto strObj (índice basado en 0) y el valor de retorno es un entero de 16 bits entre 0 y 65535. Por ejemplo:
var strObj = "ABCDEFG";
var code = strObj.charCodeAt(2); // el valor Unicode del carácter 'C' es 67
Si no hay ningún carácter en el índice especificado por index, el valor de retorno es NaN.
Para convertir la codificación Unicode a un carácter, utilice el método String.fromCharCode(). Tenga en cuenta que es un "método estático" del objeto String, lo que significa que no necesita crear una instancia de cadena. antes de su uso:
String.fromCharCode(c1, c2, ...)
Acepta 0 o más números enteros y devuelve una cadena que contiene los caracteres especificados por cada parámetro. :
var str = String.fromCharCode(72, 101, 108, 108, 111); // str == "Hola"
Discusión:
Unicode contiene conjuntos de caracteres para muchos de los idiomas escritos del mundo, pero solo porque Unicode contiene un carácter, no espere que ese carácter se muestre correctamente cuando se representa un cuadro de diálogo de alerta, un cuadro de texto o una página. Si el conjunto de caracteres no está disponible, aparecerá en la página como un signo de interrogación u otro símbolo. Una computadora norteamericana típica no podrá mostrar caracteres chinos en la pantalla a menos que estén instalados el juego de caracteres chinos y sus fuentes.