Zeichen/Wörter vertauschen

  • VB.NET

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von der_Kurt.

    Zeichen/Wörter vertauschen

    Hi leute,

    Ich hab vergebens Google und das Forum hier durchsucht, daher hoffe ich, ihr könnt mir bei folgendem Problem helfen:

    Ich will ganze texte komplett verdrehen, zB: aus "Hallo ich bin Michi" wird "ihciM nib hci ollaH"
    Und geht das auch mit ganzen Worten? zB: aus "Hallo ich bin Michi" wird "Michi bin ich Hallo"

    Danke für hilfe und ich bitte euch bei diesem Thema keine älternen Foren anzusprechen!

    MfG:)
    Wenn es doch Grundlagen sind, warum haste sie nicht drauf?

    Abgesehen davon bietet MSDN Hilfe.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    1. Bitte die Hilfreich-Funktion benutze!

    2. Hier, damit kannst du mal zeichen vertauschen:

    VB.NET-Quellcode

    1. Dim Text As String = "Hallo ich bin michi"
    2. Dim Liste As String = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ-:.´`()/&%$§!ß^äüöÄÜÖ"
    3. Dim ListeErsetzen As String = "zyxwvutsrqponmlkjihgfedcba~qweRtzuIopasdFghjklyxcVbnm:.`?(°!$§%&)/(<Ä[]{}\@"
    4. Dim output As String = ""
    5. For Each chr As Char In Text
    6. output &= ListeErsetzen(Liste.IndexOf(chr))
    7. Next
    8. msgbox(output)
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Sorry

    eine TextBox ist bereit ein Arry.
    Also nur mit Step -1 durchgehen

    Hier mal einen kurzen ausschnitt

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. For i = TextBox1.Text.Length - 1 To 0 Step -1
    3. TextBox2.Text &= TextBox1.Text(i).ToString
    4. Next
    5. End Sub

    Geht nicht :(

    @ Gather : so sieht mein code aus:

    VB.NET-Quellcode

    1. Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If TextBox1.Text <> "" Then Dim word As String = TextBox1.Text For Each item As String In ListBox1.Items If item.Contains(word) Then ListBox1.Visible = False Else TextBox1.Text = "rehold" Dim Text As String = RichTextBox1.Text Dim Liste As String = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ-:.´`()/&%$§! ß^äüöÄÜÖ" Dim ListeErsetzen As String = "zyxwvutsrqponmlkjihgfedcba~qweRtzuIopasdFghjklyxcVbnm:.`?(°!$§%&)/(<Ä[]{}\@" Dim output As String = "" For Each chr As Char In Text output &= ListeErsetzen(Liste.IndexOf(chr)) Next MsgBox(output) End If Next End If End SubEnd Class

    aber bei mir kommen da nur msgboxn (hören nicht auf) in denen zB steht: sr~rxy~yrm~nrxsr

    MfG
    Un hier noch ein kleiner mit ganzen Worten.

    VB.NET-Quellcode

    1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    2. Dim Parts() As String = Split(TextBox1.Text, " ")
    3. For i = Parts.Count - 1 To 0 Step -1
    4. TextBox2.Text &= Parts(i) & " "
    5. Next
    6. End Sub
    Problem:

    Michi M schrieb:

    Ich will ganze texte komplett verdrehen, zB: aus "Hallo ich bin Michi" wird "ihciM nib hci ollaH"
    Und geht das auch mit ganzen Worten? zB: aus "Hallo ich bin Michi" wird "Michi bin ich Hallo"
    Erklärung "200 vertauschte zeichen":


    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. If TextBox1.Text <> "" Then
    3. Dim word As String = TextBox1.Text
    4. For Each item As String In ListBox1.Items
    5. If item.Contains(word) Then
    6. ListBox1.Visible = False
    7. Else
    8. Dim Parts() As String = Split(RichTextBox1.Text, " ")
    9. For i = Parts.Count - 1 To 0 Step -1
    10. RichTextBox1.Text &= Parts(i) & " "
    11. Next
    12. End If
    13. Next
    14. End If
    15. End Sub



    Also da kommt eine "vertauschung" nach der anderen, es soll aber der text der rtb geleert werden, und danach EINMAL der text vertauscht, in der rtb steht.

    MfG
    leider ka was du meinst, aber ich dnk mal, ich soll den vb code eicgen...

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. If TextBox1.Text <> "" Then
    4. Dim word As String = TextBox1.Text
    5. For Each item As String In ListBox1.Items
    6. If item.Contains(word) Then
    7. ListBox1.Visible = False
    8. Else
    9. Dim Parts() As String = Split(RichTextBox1.Text, " ")
    10. For i = Parts.Count - 1 To 0 Step -1
    11. RichTextBox1.Text &= Parts(i) & " "
    12. Next
    13. End If
    14. Next
    15. End If
    16. End Sub
    17. End Class

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

    Gather schrieb:

    VB.NET-Quellcode

    1. Dim Text As String = "Hallo ich bin michi"
    2. Dim Liste As String = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ-:.´`()/&%$§!ß^äüöÄÜÖ"
    3. Dim ListeErsetzen As String = "zyxwvutsrqponmlkjihgfedcba~qweRtzuIopasdFghjklyxcVbnm:.`?(°!$§%&)/(<Ä[]{}\@"
    4. Dim output As String = ""
    5. For Each chr As Char In Text
    6. output &= ListeErsetzen(Liste.IndexOf(chr))
    7. Next
    8. msgbox(output)
    Das funktioniert zwar, aber aus "hi und hallo ich bin michi" wird "'*%ü+~%'|-- %*>'%<*+%#*>'*"

    Was ist falsch? Hier mein bisheriger Code:

    VB.NET-Quellcode

    1. Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. If TextBox1.Text <> "" Then
    3. Dim word As String = TextBox1.Text
    4. For Each item As String In ListBox1.Items
    5. If item.Contains(word) Then
    6. ListBox1.Visible = True
    7. Else
    8. If TextBox2.Text = "True" Then
    9. MsgBox("Text wurde bereits vertauscht!", MsgBoxStyle.Critical, "")
    10. TextBox2.Text = "" Timer2.Start()
    11. Else
    12. If TextBox2.Text = "False" Then
    13. Timer1.Start()
    14. End If
    15. End If
    16. End If
    17. Next
    18. End If
    19. End Sub
    20. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    21. Dim Text As String = RichTextBox1.Text
    22. Dim Liste As String = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ ´`()/&%$§!ß^äüöÄÜÖ +#-.,*'_:;~<>|"
    23. Dim ListeErsetzen As String = "|<>~;:_'*,.-#+ ÖÜÄöäü^ß!§$%&/()´` ZYXWVUTSRQPONMLKJIHGFEDCBA zyxwvutsrqponmlkjihgfedcba"
    24. Dim output As String = ""
    25. For Each chr As Char In Text
    26. output &= ListeErsetzen(Liste.IndexOf(chr))
    27. RichTextBox2.Text = output
    28. Next
    29. RichTextBox1.Text = ""
    30. RichTextBox1.Text = RichTextBox2.Text
    31. TextBox2.Text = "True"
    32. Timer1.Stop()
    33. End Sub
    34. Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
    35. TextBox2.Text = "True"
    36. End Sub
    37. End Class



    MfG 8-)
    Also eine kürzere Lösung fällt mir jetzt nicht ein...

    VB.NET-Quellcode

    1. Private Sub cmdTauschen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdTauschen.Click
    2. Dim l As Integer = txtInput.Text.Length
    3. Do
    4. l = l - 1
    5. txtOutput.Text = txtOutput.Text & txtInput.Text.Chars(l)
    6. Loop Until l < 1
    7. End Sub


    Wenn das ganze mit ganzen Wörtern passieren soll würde ich mal sagen, ebenfalls mit einer Schleife den Text durchlaufen bis ein Leerzeichen gefunden wird, dann den Text seit dem letzten Leerzeichen an Anfang oder Ende setzen (je nach dem ob die Schleife von Vorne oder Hinten läuft eben) und das Ganze wieder bis alle Zeichen durchlaufen wurden.

    Man korrigiere mich bei Denkfehlern.

    MfG,
    eXtense