Reemplazar varios caracteres por numeros

Iniciado por Crazy.sx, 22 Abril 2013, 03:46 AM

0 Miembros y 1 Visitante están viendo este tema.

Crazy.sx

Buenas noches. Miren, tengo un problema que no estoy pudiendo resolver y no entiendo por qué.

Quiero reemplazar muchos caracteres (algunos caracters especiales y otros comunes) por números pero a la hora de hacerlo me salen números muy largos y nada que ver con lo que quiero hacer. He probado hacerlo con menos cantidad y funciona, pero cuando lo hago como el código siguiente el resultado es cualquier cosa.

Espero que me digan que estoy haciendo mal ya que me pasé toda la tarde buscando, probando y no pude resolverlo. Así que quisiera que le echen un vistazo y me den una mano.

En un momento pensé que es porque hay un límite de uso en cuanto los ".Replace"

Gracias.

Les muestro el código:

Código (vbnet) [Seleccionar]
   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
       TextBox2.Text = Replace(TextBox1.Text, "ñ", ".1").Replace("4", ".2").Replace( _
   "?", ".3").Replace("*", ".4").Replace("q", ".5").Replace(")", ".6").Replace("Ç", ".7").Replace("Q", ".8").Replace("I", ".9").Replace( _
   "N", ".10").Replace("u", ".11").Replace("[", ".12").Replace("0", ".13").Replace("/", ".14").Replace("¬", ".15").Replace(";", ".16").Replace( _
   "1", ".17").Replace("3", ".18").Replace("}", ".19").Replace("h", ".20").Replace("¨", ".21").Replace("8", ".22").Replace("E", ".23").Replace( _
   "ª", ".24").Replace("ÿ", ".25").Replace("ú", ".26").Replace("C", ".27").Replace("#", ".28").Replace("é", ".29").Replace("·", ".30").Replace( _
   "K", ".31").Replace("O", ".32").Replace("_", ".33").Replace("a", ".34").Replace("l", ".35").Replace("\", ".36").Replace("t", ".37").Replace( _
   "v", ".38").Replace("$", ".39").Replace(",", ".40").Replace("J", ".41").Replace("^", ".42").Replace("2", ".43").Replace("R", ".44").Replace("n", ".45").Replace( _
   "6", ".46").Replace("!", ".47").Replace("y", ".48").Replace("M", ".49").Replace("o", ".50").Replace("|", ".51").Replace("¿", ".52").Replace("Ñ", ".53").Replace( _
   "&", ".54").Replace("A", ".55").Replace("`", ".56").Replace(">", ".57").Replace("b", ".58").Replace("Y", ".59").Replace("p", ".60").Replace("í", ".61").Replace( _
   "k", ".62").Replace("{", ".63").Replace("e", ".64").Replace("Z", ".65").Replace("j", ".66").Replace("%", ".67").Replace("H", ".68").Replace("P", ".69").Replace( _
   "V", ".70").Replace("º", ".71").Replace("=", ".72").Replace(".", ".73").Replace("G", ".74").Replace("á", ".75").Replace("+", ".76").Replace("U", ".77").Replace( _
   "¡", ".78").Replace("F", ".79").Replace("z", ".80").Replace("g", ".81").Replace("@", ".82").Replace("<", ".83").Replace(" ", ".84").Replace("(", ".85").Replace( _
   """", ".86").Replace("T", ".87").Replace("9", ".88").Replace("'", ".89").Replace("]", ".90").Replace("W", ".91").Replace("D", ".92").Replace("i", ".93").Replace( _
   "c", ".94").Replace("x", ".95").Replace("´", ".96").Replace("S", ".97").Replace("ç", ".98").Replace("5", ".99").Replace("-", ".100").Replace(":", ".101").Replace( _
   "s", ".102").Replace("r", ".103").Replace("d", ".104").Replace("B", ".105").Replace("7", ".106").Replace("ó", ".107").Replace("w", ".108").Replace("X", ".109").Replace( _
   "L", ".110").Replace("m", ".111").Replace("f", ".112")
   End Sub
Destruir K. LOL

Eleкtro

#1
OMG!

No me gusta criticar los códigos de los demás pero te has pasado!, desde luego esa no es la manera de hacer las cosas bien...

Ya que vas a usar todo el alfabeto, te recomiendo que lo primero de todo definas el valor de cada letra y lo guardes en algún sitio...así lo tendrás más ordenado y mayor control si luego quieres cambiar algún número...

Prueba de esta manera:

Código (vbnet) [Seleccionar]
Public Class Form1


   Dim Alphabet As New Dictionary(Of String, Int16)


   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

       TextBox1.Text "abcdef"

       Alphabet.Add("a", 5)
       Alphabet.Add("b", 9)
       Alphabet.Add("c", 4)
       Alphabet.Add("d", 1)
       Alphabet.Add("e", 3)
       Alphabet.Add("f", 0)
      ' Alphabet.add(...

   End Sub


   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        For Each Character As String In TextBox1.Text
            TextBox1.Text = Replace(TextBox1.Text, Character, Alphabet.Item(Character))
        Next
   End Sub


End Class


Saludos!








Crazy.sx

Cita de: EleKtro H@cker en 22 Abril 2013, 04:51 AM
OMG!

No me gusta criticar los códigos de los demás pero te has pasado!, desde luego esa no es la manera de hacer las cosas bien...

Ya que vas a usar todo el alfabeto, te recomiendo que lo primero de todo definas el valor de cada letra y lo guardes en algún sitio...así lo tendrás más ordenado y mayor control si luego quieres cambiar algún número...

Prueba de esta manera:

Código (vbnet) [Seleccionar]
Public Class Form1


   Dim Alphabet As New Dictionary(Of String, Int16)


   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

       TextBox1.Text "abcdef"

       Alphabet.Add("a", 5)
       Alphabet.Add("b", 9)
       Alphabet.Add("c", 4)
       Alphabet.Add("d", 1)
       Alphabet.Add("e", 3)
       Alphabet.Add("f", 0)
      ' Alphabet.add(...

   End Sub


   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        For Each Character As String In TextBox1.Text
            TextBox1.Text = Replace(TextBox1.Text, Character, Alphabet.Item(Character))
        Next
   End Sub


End Class


Saludos!

Después que lo publiqué me quise tirar de cabeza y con los brazos al costado. Y por como estaba funcionando era obvio de que no estaba nada bien. Al menos mi código sirve de mal ejemplo.  :xD ;-)

Gracias por tu ayuda, mañana probaré lo que me recomiendas.

Saludos.

Destruir K. LOL