codificar texto String
Hola, estoy recien aprendiendo a programar en Java, y quisiera saber como codificar un texto, es decir, que cada letra(a-z) tenga su propio caracter o un string distinto (ej a=4, b=8, p=|>,etc), cosa que al ingresar un texto, apresca luego uno cn las letras reemplazadas.
intente usar el metodo texto.remplace(char old char,char new char) pero esot solo me lo permite cn un solo char y no con todas las letras del texto. cualquier consejo se agradece.
saludos!
- Inicie sesión o regístrese para enviar comentarios
Nadie te va a hacer la tarea
Aquí nadie hace la tarea de nadie, es mejor que expongas dudas muy concretas. sin embargo eso no quiere decir que no ta vayan a ayudar.
Checa la documentación de la clase String, encontrarás métodos como replace(), replaceAll(), charAt(), etc. existen muchos métodos que te pueden ayudar a hacer lo que necesitas.
Te puedo decir que con un ciclo for y un switch lo puedes hacer.
pequeño avance
Esto es lo que he podido hacer:
String texto1=io.pideUnTexto("Ingresa una frase para codificar a código 1337.");
texto1=texto1.toLowerCase();
int i;
char valor[];
valor=texto1.toCharArray();
for (i=0;i
pequeño avance
Esto es lo que he podido hacer:
String texto1=io.pideUnTexto("Ingresa una frase para codificar a código 1337.");
texto1=texto1.toLowerCase();
int i;
char valor[];
valor=texto1.toCharArray();
for (i=0;i
avance pequeño
lo que pude hacer usando toCharArray() y for, esque me devuelve los caracteres uno por uno del String, es decir me "deletrea" la frase, pero como puedo hacer para que esos caracteres me los muestre todos juntos, es definitiva me mostraria la misma frase pero cada letra seria un caracter especificado.
String texto1=io.pideUnTexto("ingresa tu texto");
int i;
char valor[];
valor=texto1.toCharArray();
for(i=0;i
switch, Override, extends, java.lang...
Cuando creas una clase implícitamente extiendes a
java.lang.Object
si no le dices a que extender.Por ejemplo:
Es lo mismito que:
Esto hace que la clase ‘StringCoder’ herede todo lo que tiene Object, entre los métodos existe uno llamado
toString
( http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html#t... ).Puedes sobre escribir los métodos que heredas, teniendo en cuenta que deben de llamarse igual, recibir los mismos tipos y cantidad de parámetros y regresar el mismo tipo que el método original.
Esto esta súper padre porque te dota de mucha flexibilidad. Por ejemplo podemos hacer que la clase ‘StringCoder’ imprima ‘hola mundo’ cada que lo coloquemos dentro de un ‘java.lang.System.out.println(a)’:
Nota: Debes de checar que ‘java.lang.*’ también está por default en todas tus class [:)]
public static void main(String[] args) {
StringCoder a = new StringCoder();
System.out.println(a);
}
}
class StringCoder extends java.lang.Object{
@Override
public String toString() {
return "hola";
}
}
/*
run:
hola
*/
Bueno pues espero te ayude este pequeño ejemplo, regresas a comentarnos como te fue va :)
public static void main(String[] args) {
StringCoder a = new StringCoder("hola mundo");
java.lang.System.out.println(a);
}
}
class StringCoder extends java.lang.Object{
private String string;
public StringCoder(String str) {
string = str;
}
@Override
public String toString() {
StringBuilder strangeString = new StringBuilder();
char[] crs = string.toCharArray();
for (int i = 0; i < crs.length; i++) {
switch (crs[i]) {
case 'a':
strangeString.append("!");
break;
case 'e':
strangeString.append("\"");
break;
case 'i':
strangeString.append("#");
break;
case 'o':
strangeString.append("$");
break;
case 'u':
strangeString.append("%");
break;
default:
strangeString.append(crs[i]);
}
}
return strangeString.toString();
}
}
h$l! m%nd$
usa replaceAll
El
((String) cosa).replace("a", "123")
solo te reemplaza la primer ocurrencia, intenta usarString.replaceAll("","")
No es muy conveniente replaceAll
Para los fines que requiere no es muy conveniente usar el replaceAll, ya que tenemos el siguiente problema:
String mensajeCodificado = mensaje.replaceAll("a", "r"); //Queremos reemplazar todas las ocurrencias de "a" por "r" o por cualquier cadena.
El resultado de lo anterior seria:
El error en la solución vendrá cuando quiera codificar el caracter "r", por que la codificación no será la correcta, creo que es mas conveniente la respuesta propuesta por rodrigo salado anaya
Cifrado César
Este «algoritmo de cifrado» es muy simple y también es muy fácil de implementar. Se le conoce como Cifrado César.
De acuerdo la descripción del Original Poster, en Java:
String original = "abp";
// Cipher
String[] replacements = {"4", "8", "|>"};
// Get input
char[] chars = JOptionPane.showInputDialog("Texto:").toLowerCase().toCharArray();
// Encode text
StringBuilder sb = new StringBuilder(chars.length);
for (char c : chars) {
int index = original.indexOf(c);
if (index >= 0) {
sb.append(replacements[index]);
} else {
sb.append(c);
}
}
// Show output
JOptionPane.showMessageDialog(null, sb.toString());
Y, por ejemplo:
Entrada
Salida
~~~