Manejo de cadenas en Java. Métodos split, indexOf, substring y trim

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:

 

La salida será:
    rojo
    amarillo
    verde
    azul
    morado
    marrón

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.
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:

 

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

Su voto: Nada Promedio: 3.6 (149 votos)

Hola, esperando encontrar ayuda... Soy nuevo en Java (NetBeans) y debo hacer lo siguiente...
Tengo un archivo txt con la siguiente info
-------------------------------------------
1111 2222 3333
4444 5555 66690

Este es el párrafo a extraer

777777777
--------------------------------------------
Lo que necesito es extraer el párrafo interno (cabe recalcar que el párrafo unas veces ocupa una sola línea otras veces ocupa dos y así...)

cabe señalar, además, que tengo como referencia, para extraerlo, que antes del párrafo aparece siempre el número 66690, pero específicamente este número es aleatorio, es decir, una veces es 66680, otras ves es 56659, etc...

Otra referencia que tengo es que el número que está después del párrafo siempre es el mismo 777777777

Porfísima si alguien me puede ayudar, me super urge... Estaré pendiente aquí para saber la respuesta, o si me la pueden mandar a mi email: [email protected]

buen dia, podrian decirme como hacer en netbeasn para yo ingresar un texto "camisa" y este se muestre "c-a-m-i-s-a", espero me envien la solucion a mi msn [email protected]

amigos encesito ayuda con este examen que necesito resolver aun no tengo mucho conocimiento de java y les agradeceria si me brindan su ayuda con esto:

La Central Telefonica del ICE procesa los mensajes de Texto para teléfonos prepago de la siguiente forma:

1. A como van entrando los mensajes los procesa y calcula el costo de cada uno.
2. Para el cobro de los mensajes de texto se toma en cuenta lo siguiente:
a. Se calcula un costo base dependiendo de la longitud del mensaje. (Método prívate int longitudMensaje(String) ) (2 pts.)
i. 1 a 10 caracteres : 50 colones por mensaje
ii. 11 a 20 caracteres: 100 colones por mensaje
iii. 21 caracteres en adelante: 200 colones por mensaje
b. Se realiza un cobro extra si el mensaje posee números, por cada número se cobra 1 colón adicional. (Método prívate int cobroAdicional(String)) (5 pts.)
c. Si el mensaje indica alguna dirección de correo ( [email protected]) , se incrementa el cobro a 10 colones adicionales. (Método prívate boolean tieneDireccion(String)). (2 pts.)
d. La central realiza un control de calidad en los mensajes y para evitar esos molestos anuncios de ventas, cada ocasión que un mensaje indica la palabra VENTA, PROMOCION, COMPRA, realiza el cobro respectivo más 10 colones. (Método prívate boolean esVenta(String)). (5 pts.)
e. De acuerdo a los puntos a,b,c y d anteriores se calcula el costo del mensaje. (Método prívate int costoMensaje(String)). (5 pts.)

3. Defina una clase TelefonoPrepago, que posea un atributo de tipo int con el saldo actual del teléfono, además deberá tener un método constructor que reciba el saldo actual del teléfono.
4. La clase deberá tener un método public String rebajarMensaje(String) que reciba el mensaje a enviar y retorne una hilera indicando el costo total del mensaje y el saldo actual después del envío (debe rebajar el costo del mensaje al atributo del saldo actual) si el saldo actual del teléfono es insuficiente deberá indicarlo y no rebajar el saldo. (10 pts.)
5. Además deberá existir un método public String toString() que retorne el saldo actual. (2 pts.)
6. El programa principal (main) no debe ser interactivo, la comunicación con el objeto debe realizarse utilizando las interfaces. Es decir, no solicite al usuario los datos de entrada sino que construya los objetos asignando directamente los valores al atributo. Para realizar la prueba de funcionamiento debe instanciar 3 objetos mensaje1, mensaje2 y mensaje3. Para mensaje1 constrúyalo con un saldo de 100 colones. Construya mensaje2 con 50 y mensaje3 con 300. (3 pts.)
7. Llame al método toString() para cada uno de los objetos y despliegue la salida en la consola (3 pts.)
8. Debe llamar al método rebajarMensaje(String) y desplegar el retorno en pantalla con los siguientes valores para cada objeto: (3 pts.)
Mensaje1: Hola
Mensaje2: Hola como vas, necesito que me facilites un buen manual de JAVA 1.6
Mensaje3: Gran PrOmOCIon de Libros Java 1.6, informes al 555-55-55 o a [email protected].

Hola tienes un error en el siguiente ejemplo:
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));

la última frase debería ser
System.out.println(colores.substring(inicio+1));

Tienes razón, lo corrijo.

Gracias

Desearia bajar este material porque me parece interesante

Hola, tengo una gran duda :

hice el split en una cadena,
String filas="dd,dd,dd,123";
data=filas.split(",");

al usar

data[3] me marca un error de number exception

no puedo convertirlo a entero me marca ese nmber exception

String km=data[3];
int testnum=Integer.parseInt(test); <---- number exception

que tengo que hacer ayuda

Una consulta en un archivo txt tengo una lista con 10 nombre de usuarios con su respectiva contraseña

En el programa debo preguntarle el nombre de usuario y la contraseña y comparar esos datos con con el archivo txt;

hola buenas noches !!
disculpen alguien podria apoyarme para lograr leer cada una de las palabras de una cadena de texto.
para poder compararlas.
por ejemplo:
String [] palabras;
palabras= texto.split(" ");
JOptionPane.showMessageDialog(null,"el texto contiene "+palabras.length+" palabras");

estas lineas de codigo las hice para contar el numero de palabras que contenia la cadena, pero necesito ahora tomar cada una de esas palabras para compararlas y ver si son palindromas de manera individual.
Gracias espero puedan apoyarme!

hola, necesito ayuda para en buscar una caracter dentro de una cadena de caracteres, de tal forma que diga que si ese caracter este en la cadena mande imprimir "el caracter se esta en el texto" pero con JOptionPane en Java porfavor si alguien sabe que me pueda mandar un mensaje a mi correo

hola me pueden ayudar con un programita.... tengo una duda como le puedo a ser para que cada letra del abecedario tenga el valor 1 2 3 4 5... etc y que cuando introduzca por ejemplo abc las sume osea asi a=1 b=2 c=3 d=4 entonces abcd = 10

Hola, necesito saber como puedo extraer los ultimos dos caracteres de String ingresado por el usurio, supongamos una direccion que el da y necesito solo los dos ultimos dos caracteres de esa direccion para usarla en un codigo...

Sasludos!

hola, una pregunta: como puedo aplicar tokenizer o split para dividir una cadena que se encuentra delimitada por palabras en vez de caracteres?

Hola mucho gusto una pregunta quería ver si me podrían ayudar estoy leyendo un txt pero necesito guardar los símbolos o caracteres después de una palabra que termina en dos puntos (:) por ejemplo
Símbolo: 0,1
Estados: q1,q2,q3
Estado inicial:q1
Gracias espero me ayuden

Enviar un comentario nuevo

El contenido de este campo se mantiene privado y no se mostrará públicamente.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <pre>. The supported tag styles are: <foo>, [foo].

Más información sobre opciones de formato