Java - Separar Caracter de una cadena sin indicador

   
Vista:

Separar Caracter de una cadena sin indicador

Publicado por Angelo angeloyepest@gmail.com (10 intervenciones) el 09/11/2017 15:35:57
Buen día, amigos solicito de su ayuda soy nuevo en el mundo de la programación y no he podido solucionar el siguiente problema de antemano les agradezco su colaboración; resulta que necesito hacer lo siguiente, debo separar una cadena ingresada como la siguiente "HOLA AMIGOS DE LWP;" esta debe quedar de la siguiente forma:
HOLA
AMIGOS
DE
LWP
;
Las Palabras ya las logre separara con usando Split con el siguiente codigo
1
2
3
4
5
6
7
8
9
String[] Token;
 
String Entrada= this.txtEntrada.getText();
 
Token= Entrada.split(" ");
 
for(int i=0; i < Token.length; i++ ){
    this.txtSalida.append(Token[i] + "\n");
}

El resultado es el siguiente

Captura

Pero el punto y coma (;) que esta al final de la frase no le he podido separar, ya no se que mas inventar para poderlo imprimir independiente a las demás palabras
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

Separar Caracter de una cadena sin indicador

Publicado por preguntas (66 intervenciones) el 09/11/2017 17:20:32
No lo separa por que lo interpreta como una sola palabra "LWP;", El texto que introduces siempre termina con un punto y coma? quieres que cuando haya un caracter especial lo separe también o solo el punto y coma?
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

Separar Caracter de una cadena sin indicador

Publicado por Angelo (10 intervenciones) el 09/11/2017 17:23:21
Correcto para este caso siempre habrá un ; al final, pero quiero que cuando sea un carácter especial lo pueda separar también, es decir si la cadena viene "HOLA AMIGOS DE (LWP);" esta quede:
HOLA
AMIGOS
DE
(
LWP
)
;
Espero haberme hecho entender
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

Separar Caracter de una cadena sin indicador

Publicado por preguntas (66 intervenciones) el 09/11/2017 18:45:14
Artesanalmente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
String especiales = "();";
        String texto = "(HOLA) AMIGOS DE (LWP);";
        String textoFinal = "";
 
        String[] palabras = texto.split(" ");
        for (String palabra : palabras) {
            palabra += "\n";
            for (int i = 0; i < palabra.length(); i++) {
                String append = String.valueOf(palabra.charAt(i));
                for (int j = 0; j < especiales.length(); j++) {
                    if (palabra.charAt(i) == especiales.charAt(j)) {
                        if (textoFinal.length() > 0 && textoFinal.charAt(textoFinal.length() - 1) != '\n') {
                            append = "\n" + append;
                        } else {
                            append = append + "\n";
                        }
                    }
                }
                textoFinal += append;
 
            }
        }
        System.out.println(textoFinal);

Prueba: http://tpcg.io/NTYgrD (Clic en execute)
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

Separar Caracter de una cadena sin indicador

Publicado por Angelo (10 intervenciones) el 09/11/2017 20:58:24
Ufff monstruo perfecto pero ven me podrías explicar un poco que hace cada parte con comentarios (//), es que lo quiero entender lo mejor posible
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

Separar Caracter de una cadena sin indicador

Publicado por preguntas (66 intervenciones) el 10/11/2017 00:58:04
Linea 1: Declaro una variable con una "lista" de caracteres especiales.
2: Declaro un texto de ejemplo que contiene letras y caracteres especiales.
3: Declaro el texto final a mostrar.

5: Separo cada palabra por sus espacios, y los almaceno en un array 'palabras'
6: Recorro el arreglo palabras y cada item de este arreglo lo almaceno en una variable "palabra"
7: A cada palabra que devuelva el bucle le agrego un salto de linea
8: Declaro un for que recorra el largo de la palabra (de la primera letra hasta la ultima)
9: Declaro una variable "append" que va a contener la letra correspondiente a la variable "i" del bucle (ejemplo: posicion 0 de la palabra corresponde al caracter ')' , posicion 1 ='H', posicion 2 ='O'...hasta la ultima letra de la palabra) y represento ese caracter como un string
10: recorro la variable que contiene la lista de caracteres especiales
11: si el caracter de la palabra es igual a un caracter especial contenido en la variable "especiales"...
12: Solamente si el texto final a mostrar contiene almenos un caracter y y si el caracter anterior al actual de esta misma variable (textoFinal) no es un salto de linea...
13: al caracter de la palabra (que seria un caracter especial), le agrego un salto de linea al principio.
14: En caso contrario
15: Agrego un salto de linea al final

19: una vez finalizada la validacion (de que si es caracter especial o no), concateno este caracter al texto final y vuelta a empezar.

23: Finalmente imprimo el texto final resultante de la validacion de todos los caracteres del texto ingresado.

Resumendo:

texto = "(Hola)";
final = "";

si, "(" es un caracter especia -> final = "(\n"; (le agrego un salto al final porque antes de el no hay un caracter, la variable esta vacía).
no, "H" no es un caracter especial -> final = "(\nH";
no, "o" no es un caracter especial -> final = "(\nHo";
no, "l" no es un caracter especial -> final = "(\nHol";
no, "a" no es un caracter especial -> final = "(\nHola";
si, "(" es un caracter especial ->final = "(\nHola\n)"; (le agrego un salto de linea al comienzo por que si hay un caracterer antes de el, y este caracter es una letra no un salto de lineas. (el if de la linea 12).

Es asi como lo plantee, si tienes dudas comentas.

Fuu ya me dio sed...
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

Separar Caracter de una cadena sin indicador

Publicado por Angelo (10 intervenciones) el 10/11/2017 14:11:51
Oye amigo en verdad te agradezco de corazón tu ayuda, no todos se toman el tiempo de hacer esto, espero algún día poder retribuirlo
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

Separar Caracter de una cadena sin indicador

Publicado por Angelo (10 intervenciones) el 10/11/2017 15:01:13
Amigo me salta una duda, nunca habia visto esta forma de condicionar un para
1
for (String palabra : palabras) {
Me puedes explicar como funciona porque no entiendo como funciona los dos puntos (:) dentro de las dos variables y como haces para finalizar el ciclo
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

Separar Caracter de una cadena sin indicador

Publicado por preguntas (66 intervenciones) el 10/11/2017 17:11:11
Es un for each.

Se utiliza así:

int[] items = {1,2,3};

for(int item : items){

System.out.println(item);

}

cada elemento del arreglo "items" se almacena dentro de la variable temporal "item". Este for iterará automaticamente por cada elemento del arreglo o coleccion que se le pasa. La variable temporal debe ser definida con el tipo de dato que se espera recibir. En el ejemplo anterior, un arreglo de numero enteros por lo que cada elemento de este arreglo es un numero (un int) y por eso declaro la variable "item" como int

Es como decir:

for(int i=0;i<items.length;i++){

int item = items[i];

System.out.println(item);

}

Más informacion por si no queda claro: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=632:el-for-extendido-o-bucles-for-each-en-java-ventajas-e-inconvenientes-ejercicio-ejemplo-resuelto-cu00666b&catid=68&Itemid=188
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

Separar Caracter de una cadena sin indicador

Publicado por Angelo (10 intervenciones) el 15/11/2017 22:34:45
Mi amigo muy buenas, quiero que me ayudes con lo siguiente tengo un Array de tipo string y quiero recorrerlo con un for pero quiero evaluar lo que tenga en la posición i con una información. como hago para almacenar lo que tenga en la posición i en una variable también tipo string

Pego el codigo por si es un poco mas fácil de entender

1
2
3
4
5
6
7
String Entrada = "Hola amigos";
String[] Token = Entrada.split(" ");//aqui estoy dividiendo lo que tiene Entrada en el array Token
 
for(int i=0; i<Token.length; i++){
    String Temp= //Como almaceno en temp lo que tenga el Array en la posicion i en este momento el cual sera "Hola"
 
}

Se que parece tonta la pregunta pero no lo he logrado conseguir.
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

Separar Caracter de una cadena sin indicador

Publicado por preguntas (66 intervenciones) el 15/11/2017 23:19:41
1
2
3
4
5
6
7
String Entrada = "Hola amigos";
String[] Token = Entrada.split(" ");//aqui estoy dividiendo lo que tiene Entrada en el array Token
 
for(int i=0; i<Token.length; i++){
    String Temp= Token[i]; // <---------
 
}
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

Separar Caracter de una cadena sin indicador

Publicado por Angelo (10 intervenciones) el 16/11/2017 21:28:34
Hola amigo espero y me puedas ayudar con lo siguiente: Necesito evaluar una cadena de caracteres como la siguiente a+b=c; y arrojar si es correcta o no , trate de comparar lo caracteres con un for pero no se que pasa no me esta funcionando.
Una Asignación mal hecha podría ser a++c=b o a+b*c-+d==cdd;

Otra cadena de ejemplo podría ser suma=num1+(num2*num3);
y mal escrita suma=num1-+(num2*/num3);

osea los operadores no pueden ir seguidos los unos de los otros

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
String Entrada=this.txtEntrada2.getText();
String[] Token=Entrada.split(" ");
 
for(int i=0; i<Token.length; i++){
    for(int j=1; j<Token.length; j++){
        String Temp=Token[i];
        String Temp1=Token[j];
 
        if(Temp.matches(".*[*+/-=].*")&&Temp1.matches(".*[*+/-=].*")){
            this.txtSalida.setText("Expresion incorrecta");
 
        }
    }
}
this.txtSalida.append("Expresion correcta no hay caracteres repetidos");

Adicional a esto debo evaluar que la expresión System.out.print("Esto es una prueba"); este correctamente escrita a excepción de Esto es una prueba, es decir no puede estar escrita
System.out.print("Esto es una prueba"

System.outprint("Esto es una prueba");

system.out.print("Esto es una prueba");

Debe ser System.out.print("");
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

Separar Caracter de una cadena sin indicador

Publicado por preguntas (66 intervenciones) el 22/11/2017 21:48:43
También ocuparías sus buenas lineas de código, sobre todo por los símbolos:

a -+ b = c; => incorrecto?
a +- b = c; => correcto
a + b = c; => correcto

hay que validar números positivos y negativos para poder definir si el símbolo de operación esta bien ubicado o no.

Lo segundo si es que solamente es validar un System.out.println(""); fácilmente con expresiones regulares validas cada parte de la sentencia.

Que empiece por System, luego un ., luego out, luego...

Ya lo intentaste?
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
Revisar política de publicidad