Replace funktioniert nicht

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von wsk1000.

    Replace funktioniert nicht

    Hallo!
    Ich habe Replace in mein Programm eingebaut, und habe einen kompletten Fehler!

    Ich habe diesen Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim text As String = TextBox1.Text
    2. text = text.Replace("a", "n")
    3. text = text.Replace("b", "o")
    4. text = text.Replace("c", "p")
    5. text = text.Replace("d", "q")
    6. text = text.Replace("e", "r")
    7. text = text.Replace("f", "s")
    8. text = text.Replace("g", "t")
    9. text = text.Replace("h", "u")
    10. text = text.Replace("i", "v")
    11. text = text.Replace("j", "w")
    12. text = text.Replace("k", "x")
    13. text = text.Replace("l", "y")
    14. text = text.Replace("m", "z")
    15. text = text.Replace("n", "a")
    16. text = text.Replace("o", "b")
    17. text = text.Replace("p", "c")
    18. text = text.Replace("q", "d")
    19. text = text.Replace("r", "e")
    20. text = text.Replace("s", "f")
    21. text = text.Replace("t", "g")
    22. text = text.Replace("u", "h")
    23. text = text.Replace("v", "i")
    24. text = text.Replace("w", "j")
    25. text = text.Replace("x", "k")
    26. text = text.Replace("y", "l")
    27. text = text.Replace("z", "m")
    28. TextBox2.Text = text


    Ok
    Bei mir ist es so, dass wenn ich jetzt nur a und b erstezte funktioniert es, aber wenn ich alle stehen habe, dann nicht mehr.
    Dann zeigt er mir den Text an, welchen ich eingegeben habe!

    Danke im voraus!

    Quellcode

    1. text = text.Replace("a", "n")
    2. text = text.Replace("b", "o")
    3. text = text.Replace("c", "p")
    4. text = text.Replace("d", "q")
    5. text = text.Replace("e", "r")
    6. text = text.Replace("f", "s")
    7. text = text.Replace("g", "t")
    8. text = text.Replace("h", "u")
    9. text = text.Replace("i", "v")
    10. text = text.Replace("j", "w")
    11. text = text.Replace("k", "x")
    12. text = text.Replace("l", "y")
    13. text = text.Replace("m", "z")
    14. text = text.Replace("n", "a")


    Schau dir das mal an. Zuerst wird a durch n ersetzt und weiter unten wird n sofort wieder durch a ersetzt. Selbiges geschieht auch mit den anderen Buchstaben.
    Am besten du machst das ohne fertige Funktionen. Leg dir ein Dictionary an, dass jedem Char einen Replacement-Char zuordnet. Dann gehst du den Eingabestring Zeichen für Zeichen durch und fügst in nem Stringbuilder den dem jeweiligen Char zugeordneten Replacement-Char hinzu.
    so wie du es probierst geht es nicht du musst jedes Zeichen in ein for schleife prüfen :

    VB.NET-Quellcode

    1. Dim st As String = "Hallo Welt :)".ToLower
    2. Dim sec As String = ""
    3. For i = 0 To st.Length - 1
    4. Dim ce As Char
    5. Select Case st(i)
    6. Case "a"c : ce = "n"c
    7. Case "b"c : ce = "o"c
    8. Case "c"c : ce = "p"c
    9. Case "d"c : ce = "q"c
    10. Case "e"c : ce = "r"c
    11. Case "f"c : ce = "s"c
    12. Case "g"c : ce = "t"c
    13. Case "h"c : ce = "u"c
    14. Case "i"c : ce = "v"c
    15. Case "j"c : ce = "w"c
    16. Case "k"c : ce = "x"c
    17. Case "l"c : ce = "y"c
    18. Case "m"c : ce = "z"c
    19. Case "n"c : ce = "a"c
    20. Case "o"c : ce = "b"c
    21. Case "p"c : ce = "c"c
    22. Case "q"c : ce = "d"c
    23. Case "r"c : ce = "e"c
    24. Case "s"c : ce = "f"c
    25. Case "t"c : ce = "g"c
    26. Case "u"c : ce = "h"c
    27. Case "v"c : ce = "i"c
    28. Case "w"c : ce = "j"c
    29. Case "x"c : ce = "k"c
    30. Case "y"c : ce = "l"c
    31. Case "z"c : ce = "m"c
    32. End Select
    33. sec &= ce
    34. Next
    35. MessageBox.Show(sec)
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise
    Such' mal nach ROT13.

    Hier meine Lösung für VB(5,6,A), QB, PB

    VB.NET-Quellcode

    1. Sub rot13()
    2. Dim t As String, x As Long, z As Integer
    3. t = "abcdefghijklmnopqrstuvwxyz"
    4. For x = 1 To Len(t)
    5. z = Asc(Mid$(t, x))
    6. Select Case z
    7. Case 65 To 90 ' Großbuchstaben
    8. Mid$(t, x, 1) = Chr$((z - 52) Mod 26 + 65)
    9. Case 97 To 122 ' Kleinbuchstaben
    10. Mid$(t, x, 1) = Chr$(((z - 84) Mod 26) + 97)
    11. End Select
    12. Next
    13. Debug.Print t
    14. End Sub

    Kannst du ja nach nach Vb.net konvertieren.
    Tipp: Mid$ -> Substring, Chr$ -> Chr, Len -> lenght, erstes Zeichen ist Position 0, nicht 1!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Eierlein“ ()

    VB.NET-Quellcode

    1. Private word As String = "das ist ein test"
    2. Private words As New Dictionary(Of Char, Char)
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. word = String.Concat(Word.Select(Function(item) If(words.Keys.Contains(item), words(item), item)))
    5. MessageBox.Show(Word)
    6. End Sub
    7. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    8. For key = 97 To 122
    9. Dim actual = key
    10. If actual + Keys.N - Keys.A > 122 Then
    11. actual = key - 26
    12. End If
    13. words.Add(Convert.ToChar(key), Convert.ToChar(actual + Keys.N - Keys.A))
    14. Next
    15. End Sub