Muchas veces nos es necesario tratar cadenas de texto, pero la mayoría de esas veces no utilizamos la cadena entera, sino que necesitamos extraer subcadenas que contienen datos relevantes.
Java tiene varios métodos para el manejo de cadenas. Los que vamos a tratar son los siguientes:
- String[] split(String regex)
- int indexOf(int ch)
- int indexOf(int ch, int fromIndex)
- String substring(int beginIndex)
- String substring(int beginIndex, int endIndex)
- String trim()
El método split devuelve un array de String. Es muy útil cuando tenemos un conjunto de elementos separados por comas. Por ejemplo:
```java String colores = "rojo,amarillo,verde,azul,morado,marrón"; String[] arrayColores = colores.split(",");// En este momento tenemos un array en el que cada elemento es un color. for (int i = 0; i < arrayColores.length; i++) { System.out.println(arrayColores[i]); }
<p>La salida será:<br />
rojo<br />
amarillo<br />
verde<br />
azul<br />
morado<br />
marrón<br />
</p>
<p>
El método indexOf devuelve la primera aparición de una cadena dentro de un String. Si le pasamos dos parámetros el primero será la cadena a buscar y el segundo la posición en la que empezará a buscar.<br />
El método substring devolverá una subcadena del String, desde la posición de inicio hasta la posición de fin. Si sólo se especifica un parámetro la subcadena contendrá desde la posición de inicio hasta el final de la cadena. Se ve más claro en el siguiente ejemplo:<br />
</p>
```java
String colores = "rojo,amarillo,verde,azul,morado,marrón";
int inicio = colores.indexOf(",");
int fin = colores.indexOf(",", inicio + 1);
System.out.println(colores.substring(inicio + 1, fin));
System.out.println(colores.substring(inicio + 1));
La salida será:
amarillo
amarillo,verde,azul,morado,marrón
Por último, el método trim devuelve una copia de la cadena, pero sin los espacios al inicio o al fin. Es bastante útil en el uso de formularios y en otras muchas ocasiones. Os dejo la prueba para vosotros.
Espero que os haya sido de ayuda.
Por favor, para consultas sobre estos métodos, abrir un tema en los foros de Java-Spain
Comentarios (64)
if (!x.equals("lol")) {public void prueba() { String s = "s"; String h; String j = "sapo"; h = j.substring(0,1); if (s.equals(h)) { System.out.println("lol"); } }Si quieres comparar cadenas independientemente de si están escritas en mayúsculas o minúsculas, utiliza el método equalsIgnoreCase.public static String paddingString(String s, int n, char c, boolean paddingLeft) { if (s == null) { char[] ch2 = new char[n]; Arrays.fill(ch2, c); String resp = new String(ch2); return resp; } int add = n - s.length(); if(add <= 0){ return s; } StringBuffer str = new StringBuffer(s); char[] ch = new char[add]; Arrays.fill(ch, c); if(paddingLeft){ str.insert(0, ch); }else{ str.append(ch); } return str.toString(); }No sé exactamente a qué te refieres, pero te puedo decir q en Java, el carácter 'a' es distinto de 'A', por lo que tendrías que buscar las mayúsculas. Si quieres explícalo un poco más a ver qué se puede hacer.
Un saludo.
Gracias @lupillo, he editado tu comentario para que sea más sencillo ver el código.
Espero que haya muchas más aportaciones como la tuya.
char[] M = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; public String separar (char[] letras) { for (int x = 0 ; x < letras.length ; x++) { int a=1; for (int y = 0 ; y < M.length ; y++) { if (letras [x] == M [y]) { cad = cad + letras [x] + "'"; a=0; } } if (a==1) cad1 = cad1 + letras [x] + "'"; } return (cad + "," + cad1); }Tendrás que utilizar la clase Stack. Esta clase dispone de los métodos push y pop.
Push añade un elemento en la cima de la pila y pop lo extrae. Lo demás es trabajo tuyo, tendrás que pensar un poco.
Hola, paso a responder tu duda:
Cuando tú haces:
datoba = a.substring(1, l-1);la cadena a no se modifica, queda tal cual estaba antes de ejecutar el método. En Java la clase String es inmutable, por lo que deberás asignar la salida del método a otro String, como bien haces.
Hola, bueas tardes, tengo una pregunta... Tengo una cadena asi más o menos:
lo que necesito es sacar los datos importantes como 23 52 y var y guardarlo en diferentes cadenas de datos...lo que tengo es:
mi pregunta principal es: cuando hago a.substring(1,l-1); estoy sacando los datos que necesito lo que no se es que si en a queda guardada la cadena inicial o queda guardada la nueva cadena sin los datos que le saque... gracias por su ayuda
public final class WdWatt implements Serializable{ public static void main(String [] args){ } }