Zeichen ersetzen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von link_275.

    Zeichen ersetzen

    Abend zusammen,

    Ich habe gerade ein kleines Problem,
    undzwar möchte ich ein Text verändern,bzw. Alle Zeichen durch eine Zahl ersetzen.
    Bsp:
    A = 1 , B = 2 , C = 3 , D = 4

    Eingabe: ABCD

    Ausgabe: 1234

    Und das alles auch wieder zurück.
    Wie man einzelne Zeichen mit Replace ersetzt weiß ich,aber mehrere schaff ich nicht...
    ist wahrscheinlich ziemlich leicht, :D

    Bin für jeden Tipp dankbar!

    Lg
    Nsjdvv
    So mittlerweile habe ik was zusammengebastelt was fast mein Zweck erfüllt...
    bitte nicht lachen xD
    Das problem er ersetz zwar die gewünschten zeichen mit den gewünschten Zahlen ,aber die Ausgabe ist nicht in der richtigen reihenfolge...
    bsp:
    Eingabe = ABCD
    Ausgabe = 1234
    das isst richtig ,aber wen ich :
    Eingabe = DCBA

    mache ist die ausgabe auch :
    Ausgabe = 1234
    hoffe mir kann jemand helfen..

    VB.NET-Quellcode

    1. Private Sub convert()
    2. Dim eingabe As String
    3. Dim anzeige As String
    4. eingabe = txt_eigabe.Text
    5. Dim a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z As String
    6. a = "1"
    7. b = "2"
    8. c = "3"
    9. d = "4"
    10. e = "5"
    11. f = "6"
    12. g = "7"
    13. h = "8"
    14. i = "9"
    15. j = "10"
    16. k = "11"
    17. l = "12"
    18. m = "13"
    19. n = "14"
    20. o = "15"
    21. p = "16"
    22. q = "17"
    23. r = "18"
    24. s = "19"
    25. t = "20"
    26. u = "21"
    27. v = "22"
    28. w = "23"
    29. x = "24"
    30. y = "25"
    31. z = "26"
    32. 'Buchstaben Durch Zahlen Ersetzen
    33. anzeige = eingabe.Replace("a", a) & eingabe.Replace("b", b) & eingabe.Replace("c", c) & eingabe.Replace("d", d) & eingabe.Replace("e", e) &
    34. eingabe.Replace("f", f) & eingabe.Replace("g", g) & eingabe.Replace("h", h) & eingabe.Replace("i", i) & eingabe.Replace("j", j) &
    35. eingabe.Replace("k", k) & eingabe.Replace("l", l) & eingabe.Replace("m", m) & eingabe.Replace("n", n) & eingabe.Replace("o", o) &
    36. eingabe.Replace("p", p) & eingabe.Replace("q", q) & eingabe.Replace("r", r) & eingabe.Replace("s", s) & eingabe.Replace("t", t) &
    37. eingabe.Replace("u", u) & eingabe.Replace("v", v) & eingabe.Replace("w", w) & eingabe.Replace("x", x) & eingabe.Replace("y", y) &
    38. eingabe.Replace("z", z)
    39. txt_ausgabe.Text = anzeige 'in texbox schreiben (buchstaben & zahlen)
    40. txt_ausgabe.Text = Replace2(txt_ausgabe.Text, "abcdefghijklmnopqrstuvwxyz""", "") 'Alle buchstaben löschen
    41. End Sub
    42. Function Replace2(ByVal name As String, ByVal s As String, ByVal neu As String) As String
    43. Dim a As Long
    44. Dim i As Long
    45. Dim z As String
    46. Dim n As String
    47. n = name
    48. For i = 1 To Len(s)
    49. z = Mid(s, i, 1)
    50. n = Replace(n, z, neu)
    51. Next i
    52. Replace2 = n
    53. End Function



    Lg
    Nsjdvv

    nsjdvv schrieb:

    So mittlerweile habe ik was zusammengebastelt was fast mein Zweck erfüllt...
    bitte nicht lachen xD
    Werden wir schon nicht.

    nsjdvv schrieb:

    das isst richtig ,aber wen ich :
    Eingabe = DCBA mache ist die ausgabe auch :Ausgabe = 1234

    Das liegt an Deinem Verfahren: wenn ich es richtig verstanden habe, so
    - ersetzt Du nacheinander im im Eingabestring jeden Buchstaben nacheinander durch Zahlen und verbindest dann diese Teilergebnisse
    - weil das Ergebnis noch Buchstaben enthält , löscht Du diese mit der Methode convert2 raus.

    Dein Fehler liegt im ersten Schritt,denn bei einer Eingabe von "dcba" ist das Ergebnis 'dcb1dc2ad3ba4cbadcbadcbadcbadcbadcbadcbadcbadcbadcbadcbadcbadcbadcbadcbadcbadcbadcbadcbadcbadcbadcbadcba'.
    Wenn Du dort die Buchstaben rauslöscht, kommt halt 1234 raus ;)

    Eine kleine Änderung in Deinem Code würde das korrigieren und Du müsstest auch keine Buchstaben mehr rauslöschen:

    VB.NET-Quellcode

    1. 'Buchstaben Durch Zahlen Ersetzen
    2. eingabe = eingabe.Replace("a", a)
    3. eingabe = eingabe.Replace("b", b)
    4. .... ' usw
    5. eingabe = eingabe.Replace("z", z)
    6. txt_ausgabe.Text = eingabe 'in texbox schreiben , sollte jetzt richtig sein

    Aber wie Du merkst ist das ziemlich schreibaufwändig. Warum durchläufst Du Deine Eingabe nicht lieber Buchstabe für Buchstabe und gibst den Index im Alphabet aus :

    Beispiel

    VB.NET-Quellcode

    1. ' Ausgabe löschen
    2. txt_ausgabe.Text = ""
    3. ' eingabe Buchstabe für Buchstabe in einer Schleife durchlaufen
    4. For Each c As Char In txt_eingabe.Text
    5. ' index des Buchstaben c im Alphabet finden: beginnt mit 0
    6. Dim index As Integer = "abcdefghijklmnopqrstuvwxyz".IndexOf(c)
    7. ' index+1 ausgeben
    8. index += 1
    9. txt_ausgabe.Text &= index.ToString
    10. Next
    11. End Sub


    Dieser Code ist zwar auch nicht nicht sauber, aber er gibt Dir vielleicht eine Idee wie Du es machen könntest.
    Schönen guten Tag..

    undzwar habe ich so gut wie keine Kenntnisse, oder nur ganz geringe im Visual Studio 2010.

    Allerdings möchte ich gerne ein Programm haben, was so ähnlich ist, wie dieses.. nur, dass ich andere Buchstaben anstatt Zahlen durch Buchstaben ersetzen lassen möchte.. leider hab ich keinerlei Ahnung davon.. Kann man es so ähnlich machen, wie im Vorpost? Wenn ja, was müsste ich verändern, damit es bei mir klappt?

    Um Hilfe wäre ich sehr erfreut! ;D

    PS: Das Programm soll quasi einen normalen Text in eine Geheimsprache ändern.. von Textbox1 quasi in Textbox2.. also ich glaub nicht mal, dass es sehr schwer ist, aber da keine Ahnung und so^^ ne Hilfe wäre es .. :)
    ==> ev_example.rar <==

    Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button_Verschluesseln_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Verschluesseln.Click
    3. Dim src_str As String = TextBox1.Text
    4. Dim res_str As String = ""
    5. For Each zeichen As String In src_str
    6. For Each item As String In alp_arr
    7. If item(0) = zeichen Then
    8. res_str &= item(item.Length - 1)
    9. End If
    10. Next
    11. Next
    12. TextBox2.Text = res_str
    13. End Sub
    14. Private alp_arr(51) As String
    15. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    16. Dim r As New Random
    17. Dim alp_str As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    18. Dim tmp_str As String = alp_str
    19. For i As Integer = 0 To alp_arr.Length - 1
    20. Dim rn As String = r.Next(0, tmp_str.Length)
    21. alp_arr(i) = alp_str(i) & "=" & tmp_str(rn)
    22. tmp_str = tmp_str.Remove(rn, 1)
    23. Next
    24. For Each item As String In alp_arr
    25. ListBox1.Items.Add(item)
    26. Next
    27. End Sub
    28. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    29. Dim src_str As String = TextBox2.Text
    30. Dim res_str As String = ""
    31. For Each zeichen As String In src_str
    32. For Each item As String In alp_arr
    33. If item(item.Length - 1) = zeichen Then
    34. res_str &= item(0)
    35. End If
    36. Next
    37. Next
    38. TextBox3.Text = res_str
    39. End Sub
    40. End Class


    Kann man sicher einfacher/eleganter lösen als Ich das jetzt hier hab', aber nur damit du in etwa weißt wie man's machen kann. Hab's jetzt nur auf die schnelle zusammengeschrieben..



    link_275
    Hello World