Replace funktioniert nicht richtig

  • VB.NET

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

    Replace funktioniert nicht richtig

    Hallo,

    Ich arbeite seit mindestens 3 Stunden an einer einzigen Function die einfach nicht will so wie ich es gerne hätte habe bereits mehrere Änderungen vorgenommen, aber leider ohne Erfolg.

    Ich möchte wenn in einer Textdatei abc steht das dann der Buchstabe a zu 1 wird, b zu 2 wird und c zu 3 wird nur funktioniert das nicht weil die ja alle drei nebeneinander sind zumindest denke ich dass, das der Fehler ist.
    Bei mir sieht es dann so aus b=&
    und so sollte es aussehen 123
    Wenn ich nur einen der drei Buchstaben reinschreibe funktioniert es.
    Was mach ich Falsch?
    Bitte um Hilfe!



    Hier der Code:

    VB.NET-Quellcode

    1. Private Function decrypt(ByVal data, ByVal pfad)
    2. For Each i As String In IO.File.ReadAllLines(pfad)
    3. If i = "b" Then
    4. data = data.Replace("b", "1")
    5. End If
    6. If i = "=" Then
    7. data = data.Replace("=", "2")
    8. End If
    9. If i = "&" Then
    10. data = data.Replace("&", "3")
    11. End If
    12. If i = "$" Then
    13. data = data.Replace("$", "4")
    14. End If
    15. If i = "%" Then
    16. data = data.Replace("%", "5")
    17. End If
    18. If i = "!" Then
    19. data = data.Replace("!", "6")
    20. End If
    21. If i = "ö" Then
    22. data = data.Replace("ö", "7")
    23. End If
    24. If i = "ü" Then
    25. data = data.Replace("ü", "8")
    26. End If
    27. If i = "ä" Then
    28. data = data.Replace("ä", "9")
    29. End If
    30. If i = "0" Then
    31. data = data.Replace("0", "0")
    32. End If
    33. Next
    34. IO.File.WriteAllText(pfad, data)
    35. End Function


    Edit by der_Kurt: Code lesbar gemacht

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

    ReadAllLines ließ die Textdatei Zeilenweise aus.
    Entweder zersplittest du dir die Zeile dann anschließend oder du versuchst es mal mit .ReadAllBytes
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Schamash schrieb:

    ReadAllLines ließ die Textdatei Zeilenweise aus.
    Entweder zersplittest du dir die Zeile dann anschließend oder du versuchst es mal mit .ReadAllBytes
    Das mit dem .Split hab ich auch schon versucht nur ohne Erfog
    Ich weiß einfach nicht wie ich das in diese Schleife einbauen soll so das es funktioniert :(
    Pseodocodce:

    VB.NET-Quellcode

    1. Private Function decrypt(ByVal data, ByVal pfad)
    2. For Each i As String In IO.File.ReadAllLines(pfad)
    3. for j =0 to i.lenght
    4. select case i.substing(j,1)
    5. Case "a"
    6. Case "b"
    7. End select
    8. next
    9. Next
    10. IO.File.WriteAllText(pfad, data)
    11. End Function



    so ähnlich. Hab gerade kein VB zur Hand um das richtig einzugeben
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    @oxDarkxo:: Bevor Du auch nur eine weitere Zeile Code schreibst, gib bitte Deinem Projekt Option Strict On.
    Und nutze dann einfach die Mächtigkeit der Replace-Funktion:

    VB.NET-Quellcode

    1. Private Sub decrypt(ByVal pfad As String)
    2. Dim data = IO.File.ReadAllText(pfad)
    3. data = data.Replace("b", "1")
    4. data = data.Replace("=", "2")
    5. data = data.Replace("&", "3")
    6. data = data.Replace("$", "4")
    7. data = data.Replace("%", "5")
    8. data = data.Replace("!", "6")
    9. data = data.Replace("ö", "7")
    10. data = data.Replace("ü", "8")
    11. data = data.Replace("ä", "9")
    12. data = data.Replace("0", "0")
    13. IO.File.WriteAllText(pfad, data)
    14. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    @oxDarkxo:: Bevor Du auch nur eine weitere Zeile Code schreibst, gib bitte Deinem Projekt Option Strict On.
    Und nutze dann einfach die Mächtigkeit der Replace-Funktion:

    VB.NET-Quellcode

    1. Private Sub decrypt(ByVal pfad As String)
    2. Dim data = IO.File.ReadAllText(pfad)
    3. data = data.Replace("b", "1")
    4. data = data.Replace("=", "2")
    5. data = data.Replace("&", "3")
    6. data = data.Replace("$", "4")
    7. data = data.Replace("%", "5")
    8. data = data.Replace("!", "6")
    9. data = data.Replace("ö", "7")
    10. data = data.Replace("ü", "8")
    11. data = data.Replace("ä", "9")
    12. data = data.Replace("0", "0")
    13. IO.File.WriteAllText(pfad, data)
    14. End Sub
    Hab das schon alles gelöst ;)

    der Fehler war schlicht und einfach das ich bei den If abfragen das .Contains() vergessen habe ;)
    Wozu brauchst Du bei einem .Replace(...) ein

    oxDarkxo schrieb:

    .Contains()
    :?:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!