none
¿Cómo reemplazar un número de 2 dígitos por una letra? RRS feed

  • Pregunta

  • Hola, soy novato en Visual Basic (2010 Express), estoy haciendo una especie de "cifrador" de mensajes sencillo. 

    La idea es que sustituya las letras del abecedario por números, por ejemplo: 
    a=1, b=2, c=3, etc. Y también al revéz: 1=a, 2=b, 3=c, etc. 

    El programa lo hice utilizando "replace" para sustituir las letras por números y lo hace bien, pero tengo un pequeño problema al hacer la operación contraria, cuando intento convertir números en letras, el programa toma los dígitos por separado, ejemplo: 

    Cifrando: 

    Text1.Text = Replace(Text1.Text, "L", "12")

    Escribo la letra "L" y me la convierte en un "12" (Hasta ahí todo bien) 

    Descifrando: 

    Text1.Text = Replace(Text1.Text, "12", "L")
    Cuando escribo "12" no me devuelve la "L" sino que toma el 1 y 2 por separado y escribe "AB" 

    ¿Cómo puedo solucionar esto? Espero puedan ayudarme, gracias.

    jueves, 12 de abril de 2012 1:16

Respuestas

  • El problema con tu algoritmo es que es ambiguo, es decir, si en el texto cifrado pone "12", ¿Cómo se sabe si el texto original era "L" o era "AB"? No hay ninguna infrmación en el texto cifrado que permita al programa determinar cuál de las dos respuestas es la correcta.

    La sugerencia que te hago es que cambies las primeras letras para que pongan un cero, por ejemplo, A=01, B=02, etc. De esta manera, sí que te funcionará el Replace en todos los casos.

    • Marcado como respuesta Genkidan jueves, 12 de abril de 2012 17:00
    jueves, 12 de abril de 2012 6:25

Todas las respuestas

  • El problema con tu algoritmo es que es ambiguo, es decir, si en el texto cifrado pone "12", ¿Cómo se sabe si el texto original era "L" o era "AB"? No hay ninguna infrmación en el texto cifrado que permita al programa determinar cuál de las dos respuestas es la correcta.

    La sugerencia que te hago es que cambies las primeras letras para que pongan un cero, por ejemplo, A=01, B=02, etc. De esta manera, sí que te funcionará el Replace en todos los casos.

    • Marcado como respuesta Genkidan jueves, 12 de abril de 2012 17:00
    jueves, 12 de abril de 2012 6:25
  • Lo hice como dijiste y ya no hubo ningún problema, sé que tal vez era algo muy básico pero apenas estoy aprendiendo, muchas gracias.


    Genkidan

    jueves, 12 de abril de 2012 17:02
  • hola amigo disculpa la molestia yo estoy tratando de remplazar el abcenario por otrs caracteres y solo cuatro me funcionan me ayudarias ejemplo 

    texbox1.txt=replace(texbox1.txt,"a","d") solo me funciona con 4 lineas asta la ("d"","g") :)

    te lo agradeceria

    miércoles, 26 de septiembre de 2012 4:40
  • Habría que ver cómo tienes programada esa función que has llamado "replace", que debe tener algún error en su programación (o en la manera de llamarla). Si llamas al "replace" de la clase String funciona seguro:

    textBox1.Text = textBox1.Text.Replace("a", "d")

    De todas formas, no queda nada claro qué es lo que quieres decir con "solo me funciona con 4 lineas". Si te sigue fallando, pon un ejemplo más claro, completo y detallado que muestre claramente el problema que se produce. Y no digas simplemente "no me funciona"; si da un error, copia el mensaje de error completo y exacto, indicando en qué línea del código fuente se produce. Y si no da error pero los resultados no son los esperados, indica cuáles son los resultados recibidos y los esperados, señalando exactamente las líneas de código que los produjeron y cuáles fueron los datos de entrada en caso de que no sean claramente visibles en el ejemplo mostrado. Si no das datos suficientes, es muy difícil que alguien pueda responder a tu pregunta.

    miércoles, 26 de septiembre de 2012 6:46