En Java, la clase de cadena proporciona una gran cantidad de métodos de operación. Para cadenas, nuestras operaciones comunes son: comparación de cadenas, búsqueda, reemplazo, división, interceptación y otras operaciones.
En Java existen las clases de cadenas String, StringBuffer y StringBuilder, la diferencia entre ellas es que la clase String no se puede modificar, mientras que las clases StringBuffer y StringBuilder sí. Cabe señalar que la modificación aquí no es una modificación literal. En pocas palabras, por ejemplo, para realizar el empalme de dos cadenas, para el primero, supongamos que hay str1 = "hola", y desea empalmar un "mundo" para él, entonces es así, en este proceso , "hola" No ha cambiado, todavía está en la piscina. Pero para los dos últimos, asumiendo str2 = "mundo", para empalmar ''hola'', después del empalme, no hay "mundo" en el grupo. La diferencia entre StringBuffer y StringBuilder es que uno es seguro para subprocesos y el otro no.
A continuación, describimos algunas operaciones alrededor de las cadenas.
Primero, la comparación de cadenas
1, método igual()
Descripción del documento oficial:
public boolean equals( Object anObject)
Compara esta cadena con el objeto especificado. El resultado es verdadero si y solo si el argumento no es nulo y es un objeto String que representa la misma secuencia de caracteres que este objeto.
parámetro
anObject: el objeto para comparar esta cadena con
resultado
verdadero si el objeto dado representa una cadena equivalente a esta cadena; de lo contrario, falso
El método equal() en la clase String se usa para comparar dos cadenas para la igualdad. Esta comparación distingue entre mayúsculas y minúsculas. Cuando hay una constante de cadena, la forma recomendada de escribir es poner la constante de cadena fuera.La razón de esto es que si la variable exterior es nula, se lanzará una excepción de puntero nulo.
String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1.equals(str2));
// 或者这样写也行
// System.out.println(str2.equals(str1));
// 执行结果
//true
String str = new String("Hello");
// 方式一
System.out.println(str.equals("Hello"));
// 方式二
System.out.println("Hello".equals(str));
//——————————————————————————————————————
String str = null;
// 方式一
// 执行结果 抛出 java.lang.NullPointerException 异常
System.out.println(str.equals("Hello"));
// 方式二
// 执行结果 false
System.out.println("Hello".equals(str));
Si no se requiere una comparación que distinga entre mayúsculas y minúsculas, utilice el método equalsIgnoreCase(). Este método generalmente se ve en la verificación del código de verificación.
String str1 = "hello" ;
String str2 = "Hello" ;
//结果为false
System.out.println(str1.equals(str2));
//结果为true
System.out.println(str1.equalsIgnoreCase(str2));
2, método compareTo()
Descripción del documento oficial:
public int compareTo( Cadena otraCadena)
Compara dos cadenas lexicográficamente . La comparación se basa en el valor Unicode de cada carácter de la cadena. La secuencia de caracteres representada por este objeto String se compara lexicográficamente con la secuencia de caracteres representada por el argumento string. Si el objeto String precede lexicográficamente a la cadena del argumento, el resultado es un entero negativo. El resultado es un entero positivo si el objeto String sigue lexicográficamente a la cadena del argumento. Si las cadenas son iguales, el resultado es cero; compareTo devuelve 0 y el método equals(Object) devolverá verdadero.
Sin sus diferentes posiciones de índice, las cadenas más cortas preceden lexicográficamente a las cadenas más largas. En este caso, compareTo devuelve la diferencia en la longitud de la cadena, es decir, el valor: this.length() - anotherString.length()
parámetro
anotherString: la cadena con la que comparar.
resultado
El valor es 0 si la cadena del argumento es igual a esta cadena; un valor menor que 0 si el diccionario de esta cadena es más pequeño que el argumento de la cadena; el valor es mayor que 0 si el tamaño del diccionario de esta cadena excede el tamaño del argumento de cadena
El método compareTo() de la clase String es un método muy importante. Este método devuelve un número entero. Los datos devolverán tres tipos de contenido según la relación de tamaño: 1. Igual: devuelve 0. 2. Menos que: devuelve contenido menor que 0. 3. Mayor que: el contenido devuelto es mayor que 0. compareTo() es un método que puede distinguir la relación de tamaño, y es un método muy importante en el método String. Sus reglas de comparación de tamaño, resumidas en tres palabras " orden lexicográfico ", equivalen a determinar si dos cadenas están delante o detrás de un diccionario. Primero compare el tamaño del primer carácter (determinado según el valor de Unicode), si no hay ganador, compare los siguientes contenidos a su vez.
System.out.println("A".compareTo("a")); // -32
System.out.println("a".compareTo("A")); // 32
System.out.println("A".compareTo("A")); // 0
System.out.println("AB".compareTo("AC")); // -1
System.out.println("刘".compareTo("杨")); //比较结果介于unicode码
Segundo, búsqueda de cadenas
1, método contiene()
Descripción del documento oficial:
booleano público contiene ( CharSequence s)
Devuelve verdadero si y solo si esta cadena contiene la secuencia especificada de valores de caracteres.
parámetro
s - el orden en el que buscar
resultado
verdadero si esta cadena contiene s, falso de lo contrario
Se utiliza para determinar si existe una subcadena.
String str = "helloworld" ;
System.out.println(str.contains("world")); // true
2, método indexOf()
Descripción del documento oficial:
índice int público (int ch)
Devuelve el índice dentro de la cadena de la primera aparición del carácter especificado. El índice (código Unicode) se devuelve si la primera ocurrencia del evento String ocurre en la secuencia de caracteres representada por el carácter ch del valor aquí. Devuelve -1 si no hay tales caracteres en esta cadena.
parámetro
ch - un carácter (punto de código Unicode).
resultado
El índice de la primera aparición del carácter en la secuencia de caracteres representada por este objeto, o -1 si el carácter no aparece.
Encuentre la posición de la cadena especificada desde el principio y devuelva el índice inicial de la posición (a partir de 0) si se encuentra, y devuelva -1 si no se puede encontrar.
String str = "helloworld" ;
System.out.println(str.indexOf("world")); // 5,w开始的索引
System.out.println(str.indexOf("bit")); // -1,没有查到
3, comienza con () y termina con () métodos
booleano público comienza con ( prefijo de cadena )
Comprueba si esta cadena comienza con el prefijo especificado.
parámetro
prefijo - el prefijo.
resultado
Devuelve verdadero si la secuencia de caracteres representada por el argumento es un prefijo de la secuencia de caracteres representada por esta cadena; de lo contrario, es falso. También tenga en cuenta que true si el argumento es una cadena vacía o igual al objeto String se devolverá según lo determine el método equals(Object) .
booleano público termina con ( sufijo de cadena )
Comprueba si esta cadena termina con el sufijo especificado.
parámetro
sufijo - sufijo.
resultado
true si la secuencia de caracteres representada por el argumento es un sufijo de la secuencia de caracteres representada por este objeto; false en caso contrario. Tenga en cuenta que el resultado será verdadero si el argumento es el objeto String vacío o igual al objeto String según lo determinado por el método equals(Object) .
String str = "**@@helloworld!!" ;
System.out.println(str.startsWith("**")); // true
System.out.println(str.startsWith("@@",2)); // ture
System.out.println(str.endsWith("!!")); // true
Tres, reemplazo de cuerdas
método replaceAll()
cadena pública replaceAll ( cadena expresión regular, reemplazo de cadena )
Reemplaza cada subcadena de esta cadena que coincida con la expresión regular dada con el reemplazo dado .
Tenga en cuenta que las barras diagonales inversas ( \ ) y los signos de dólar ( $ ) en las cadenas de reemplazo pueden generar resultados diferentes que si se trataran como cadenas de reemplazo literales; consulte Matcher.replaceAll . Si es necesario, use Matcher.quoteReplacement(java.lang.String) para suprimir el significado especial de estos caracteres.
parámetro
regex - la expresión regular para que coincida con esta cadena
reemplazo: la cadena para reemplazar cada coincidencia
resultado
la cadena resultante
anormal
PatternSyntaxException : si la sintaxis de la expresión regular no es válida
El método replaceAll() reemplazará todo el contenido especificado. Para reemplazar la primera letra, use el método replaceFirst(). Tenga en cuenta que dado que las cadenas son objetos inmutables, el reemplazo no modifica la cadena actual, sino que produce una nueva cadena.
String str = "helloworld" ;
System.out.println(str.replaceAll("l", "_")); //he__owor_d
System.out.println(str.replaceFirst("l", "_")); //he_loworld
Cuarto, división de cuerdas
La división de cadenas es una operación común. Por ejemplo, cuando se usa BufferedReader para la entrada y salida rápida de datos, en este momento, primero ingrese las cadenas, divídalas y conviértalas en tipos de datos como int.
método dividir ()
Cadena pública [] dividida ( regex de cadena )
Divide esta cadena en coincidencias de la expresión regular dada .
El método funciona llamando al método de división de dos argumentos con la expresión dada y el argumento de restricción a cero. Por lo tanto, las cadenas vacías finales no se incluyen en la matriz resultante.
parámetro
regex - expresión regular delimitada
resultado
Una matriz de cadenas calculadas al hacer coincidir esta cadena con la expresión regular dada
anormal
PatternSyntaxException : si la sintaxis de la expresión regular no es válida
Además, es posible que algunos caracteres especiales no se segmenten correctamente como separadores y se deba agregar el símbolo de escape \\. 1. Los caracteres "|", "*", "+" deben ser escapados, precedidos por "\". 2. Si hay varios separadores en una cadena, puede usar "|" como un guión.
String str = "hello world hello People" ;
String[] result = str.split(" ") ; // 按照空格拆分
for(String s: result) {
System.out.println(s);
}
String str = "192.168.1.1" ;
String[] result = str.split("\\.") ;
for(String s: result) {
System.out.println(s);
}
String str = "name=zhangsan&age=18" ;
String[] result = str.split("&") ;
for (int i = 0; i < result.length; i++) {
String[] temp = result[i].split("=") ;
System.out.println(temp[0]+" = "+temp[1]);
}
Cinco, interceptación de cuerdas
subcadena() método
Descripción del documento oficial:
Subcadena de cadena pública (int beginIndex)
Devuelve una cadena que es una subcadena de esta cadena. La subcadena comienza con el carácter en el índice especificado y se extiende hasta el final de la cadena.
parámetro
beginIndex - el índice de inicio (inclusive).
resultado
la subcadena especificada.
anormal
IndexOutOfBoundsException si beginIndex es negativo o mayor que la longitud de este objeto String.
Este método puede extraer parte del contenido de una cadena completa, desde el índice especificado hasta el final. Cabe señalar que: 1. El índice comienza desde 0. 2. Preste atención a la escritura del intervalo de apertura frontal y apertura posterior, subcadena (0, 5) significa el carácter que contiene el subíndice 0, excluyendo el subíndice 5 .
String str = "helloworld" ;
System.out.println(str.substring(5)); // world
System.out.println(str.substring(0, 5));//hello
Seis, otros métodos comunes de operación de cuerdas
Estos métodos de operación comunes son: obtener la longitud de la cadena, eliminar los espacios a ambos lados de la cadena, mantener los espacios en el medio, convertir el caso de la cadena e invertir la cadena.
1, método trim()
Descripción del documento oficial:
Recorte de cadena pública ()
Devuelve una cadena cuyo valor es esta cadena, con los espacios iniciales y finales eliminados.
Si este objeto String representa una secuencia de caracteres vacía, o si el primer y el último carácter de la secuencia de caracteres representada por este objeto String tienen códigos mayores que '\u0020' (el carácter de espacio), entonces esta Cadena de referencia se devuelve como el objeto.
De lo contrario, si no hay caracteres en la cadena mayores que '\u0020', devuelve un objeto String que representa la cadena vacía.
De lo contrario, sea k '\u0020' para el primer carácter en cadenas con códigos mayores que '\u0020' y m sea '\u0020' para el último carácter en cadenas con códigos mayores que '\u0020'. devolverá un objeto String que representa una subcadena de esta cadena, comenzando con el carácter en el índice k y terminando con el carácter en el índice m , lo que da como resultado this.substring(k, m + 1) .
Este método se puede usar para recortar los espacios en blanco (como se definió anteriormente) desde el principio y el final de una cadena.
resultado
Una cadena cuyo valor es esta cadena, sin espacios iniciales ni finales, o la cadena si la cadena no tiene espacios iniciales ni finales.
El método trim() elimina los espacios en blanco (espacios, líneas nuevas, tabulaciones, etc.) del principio y el final de la cadena.
String str = " hello world " ;
System.out.println("["+str+"]");
System.out.println("["+str.trim()+"]");
2, métodos toUpperCase() y toLowerCase()
Descripción del documento oficial:
public String toUpperCase ( Configuración regional)
parámetro
configuración regional: las reglas de conversión de mayúsculas y minúsculas que se utilizarán con esta configuración regional
resultado
Cadena, convertida a mayúsculas.
Public String toLowerCase ( Configuración regional)
parámetro
configuración regional: las reglas de conversión de mayúsculas y minúsculas que se utilizarán con esta configuración regional
resultado
String , convertido a minúsculas.
String str = " hello%$$%@#$%world 哈哈哈 " ;
System.out.println(str.toUpperCase()); // HELLO%$$%@#$%WORLD 哈哈哈
System.out.println(str.toLowerCase()); // hello%$$%@#$%world 哈哈哈
3, método de longitud ()
Descripción del documento oficial:
longitud int pública ()
Devuelve la longitud de esta cadena. La longitud es igual a las unidades de código Unicode numérico en la cadena .
resultado
La longitud de la secuencia de caracteres representada por este objeto.
Nota: La longitud de la matriz usa la propiedad name.length de la matriz, mientras que el método length() se usa en String.
String str = " hello%$$%@#$%world 哈哈哈 " ;
System.out.println(str.length()); //24
3, método inverso()
La clase String no proporciona el método reverse(), que existe en las clases StringBuffer y StringBuilder. Para usar este método, es necesario usar new out de los objetos generados por ellos. StringBuffer y StringBuilder son muy similares, aquí, StringBuffer se usa para ilustrar.
Descripción del documento oficial:
StringBuilder público inverso ()
Hace que esa secuencia de caracteres sea reemplazada por el opuesto de la secuencia. Si la secuencia contiene pares sustitutos, se tratan como un solo carácter para la operación inversa.
resultado
una referencia a este objeto
StringBuffer sb = new StringBuffer("helloworld");
System.out.println(sb.reverse()); //dlrowolleh