Java - Insertar caracter en un string

 
Vista:
sin imagen de perfil

Insertar caracter en un string

Publicado por Alejandro (10 intervenciones) el 09/12/2016 06:19:47
Hola a todos. Necesito ayuda con un problema. El tema es que necesito insertar en un String un salto de linea cada cierta cantidad de letras, por ejemplo cada 20 letras (o caracteres) inserto el salto de linea. Con la condicion que en ese lugar haya un espacio. Y asi sucesivamente hasta recorrer toda la frase.

Es decir, si tengo un String frase = "Mauris euismod, libero et lacinia laoreet, orci eros tincidunt mauris, nec egestas metus erat nec ante. Nam suscipit odio vitae ligula ullamcorper, a rutrum urna sagittis. Mauris leo nunc, sodales sit amet varius quis, rutrum in elit. Donec fringilla, mi at volutpat dictum, metus ligula tempor ex, eget congue erat tortor et mauris."

Recorro la frase y si en el indice hay un espacio, inserto un salto de linea, si hay una palabra o caracter, me adelanto hasta el espacio mas proximo..

Hice este codigo, la idea es que si la frase supera los 20 caracteres, entra en el bucle for, comienza iterando desde la posicion 0 y aumentando la variable "cont", luego verifica si el contador conto las 20 letras, si es asi, divide la frase en dos, la variable h1 contiene lo anterior, h2 contiene lo que viene despues, y luego inserto un salto de linea en el medio. Reinicio el contador y empieza de vuelta.

El problema es que no me separa toda la frase entera, solo una parte, luego lo otro lo repite y lo agrega a la variable "palabra". Quedandome todo un desastre, intente de todo, no se en que estoy fallando.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
if (msj.length() > 20) {
 
	for (i = 0; i < msj.length(); i++) {
		if (cont == 20 && frase.charAt(i) == ' ') {
 
			h1 = msj.substring(i - 20, i);
 
			h2 = msj.substring(i, msj.length());
 
 
			palabra = palabra + h1 + "\n" + h2;
 
			cont = 0;
 
		}
		cont++;
	}
 
}
else {
	palabra = msj;
}
System.out.println (palabra);

Me tendria que quedar asi

"Mauris euismod, libe
ro et lacinia laoree
t, orci eros tincidu......";

Y agregando la condicion de los espacios

"Mauris euismod, libero
et lacinia laoreet,
orci eros tincidunt
mauris, nec egestas....."

Necesito ayuda, ya que este problema me esta trabando en un ejercicio. Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Insertar caracter en un string

Publicado por Tom (1831 intervenciones) el 09/12/2016 09:58:03
Dices que quieres insertar, yo creo que más bien necesitarías reemplazar, pero en fin:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Parrafo {
	/* */
	static void ajustar(String txt, int it) {
		StringBuilder sb = new StringBuilder(txt);
		int beg = it;
 
		for(; beg < txt.length(); beg++) {
			if(sb.charAt(beg) == ' ') {
				//sb.replace(i, i+1, "\n");
				sb.insert(beg, '\n');
				beg += it;
			}
		}
		System.out.println(sb.toString());
	}
 
	/* */
	public static void main(String[] args) {
		String frase = "Mauris euismod, libero et lacinia laoreet, orci eros tincidunt mauris, nec egestas metus erat nec ante."
			+ " Nam suscipit odio vitae ligula ullamcorper, a rutrum urna sagittis. Mauris leo nunc, sodales sit amet varius quis,"
			+ " rutrum in elit. Donec fringilla, mi at volutpat dictum, metus ligula tempor ex, eget congue erat tortor et mauris.";
		ajustar(frase, 20);
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Insertar caracter en un string

Publicado por Alejandro (10 intervenciones) el 09/12/2016 17:50:54
Muchisimas graciaas!!, sii sii, tendria que reemplazarlo.. para ello, tendria que hacer lo siguiente no?

1
2
3
4
5
6
7
for(; beg < txt.length(); beg++) {
			if(sb.charAt(beg) == ' ') {
				sb.replace(beg, beg+1, "\n");
//				sb.insert(beg, '\n');
				beg += it;
			}
		}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar