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:
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
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:
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!
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:
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.