Strings bearbeiten...

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von olicrash.

    Strings bearbeiten...

    Kann ich z.B. wenn mein String "ABC" lautet, das "A" mit dem "B" Tauschen lassen oder jedes 2. "A" durch ein "B" ersetzen lassen?
    Und auch z.B. das 3. Leerzeichen duch einen ":" ersetzen oder den 150. Buchstaben durch einen bestimmten anderen Buchstaben??? ^^
    Das sind viele Fragen. Ich habe noch den ganzen Tag Zeit, darauf zu warten... :)

    Vielen Dank
    Olicrash
    Das Ersetzen eines Beliebuigen Buchstabens, belibig oft geht durch

    VB.NET-Quellcode

    1. String.Replace(erstes argument (A), zweites Argument(B))


    Wenn du immer nur jeden dritten Buchstaben ersetzen möchtest dann kannst du z.B. es so machen:

    VB.NET-Quellcode

    1. Dim a As Integer
    2. For i As Integer = 0 To String.Lenght
    3. If String.Substring(i) = A Then
    4. If a = 0 Then
    5. a +=1
    6. String.Substring(i) = "B"
    7. Else
    8. a+=1
    9. End If
    10. End If
    11. Next


    Ich min das ersetzen des A's durch ein B muss auf eine andere Weise geschehen als durch den Substring und das einfache ersetzen, bzw setzen eines wertes Ich gucke da heute nachmittag zuhause noch einmal nach!
    zum ersetzen von alllen "A"s duch "B"s schaff ich nicht... 8|

    "Der Verweis auf einen nicht freigegebenen Member erfordert einen Objektverweis."

    kannst du mir ein Beispiel mit TextBox1.Text machen?

    Und mit dem jeden 3. Buchstabe bekomme ich den selben für mich unlösbaren Fehler...

    Danke
    Stimmt! Das geht so.
    Doch mit dem 2....:
    Lenght ist kein Member von String
    Und hier:

    VB.NET-Quellcode

    1. TextBox1.Text.Substring(i) = "B"

    kommt dieser Fehler:
    Der Ausdruck ist ein Wert und kann nicht als Ziel einer Zuweisung verwendet werden.

    Das muss ich mir vielleicht noch mal anschauen. Das gleiche Beispiel wäre aber trotzdem nett!

    Danke
    Olicrash
    Nimm den Code:

    VB.NET-Quellcode

    1. Dim count As Long = 0
    2. For i = 0 To TextBox1.TextLength - 1
    3. If TextBox1.Text.Chars(i) = "A" Then ' Der Buchstabe, der ersetzt werden soll
    4. count = count + 1
    5. End If
    6. If count = 3 Then ' Jeder 3. Buchstabe, kannst du anpassen
    7. TextBox1.Text = TextBox1.Text.Remove(i, 1)
    8. TextBox1.Text = TextBox1.Text.Insert(i, "B") ' Der Buchstabe, durch den ersetzt werden soll
    9. count = 0
    10. End If
    11. Next
    Hallo!

    Habe dir einmal etwas gebastelt:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. MsgBox(ReplaceInString(TextBox1.Text, " ", 3, ","))
    3. End Sub
    4. Private Function ReplaceInString _
    5. (ByVal sourceString As String _
    6. , ByVal searchString As String _
    7. , ByVal position As Int32 _
    8. , ByVal newValue As String) As String
    9. Dim ar = System.Text.RegularExpressions.Regex.Split(sourceString, searchString)
    10. For i = 0 To ar.Count - 1
    11. ar(i) = searchString & ar(i)
    12. Next
    13. ar(position) = newValue
    14. Return String.Join("", ar)
    15. End Function


    Damit kannst du so ziemlich alles tauschen :)
    Aber tobibukis Code war leider auch sonst nicht ganz optimal (mit Substring zum Beispiel ...). Einfach Code ein ganz bisschen anpassen:

    VB.NET-Quellcode

    1. Dim count As Long = 0
    2. For i = 0 To TextBox1.TextLength - 1
    3. If TextBox1.Text.Chars(i) = " " Then ' Der Buchstabe, der ersetzt werden soll, hier ein Leerzeichen
    4. count = count + 1
    5. End If
    6. If count = 3 Then ' Jeder 3. Buchstabe, kannst du anpassen
    7. TextBox1.Text = TextBox1.Text.Remove(i, 1)
    8. TextBox1.Text = TextBox1.Text.Insert(i, ";") ' Der Buchstabe, durch den ersetzt werden soll, hier ein ";"
    9. count = 0
    10. End If
    11. Next


    Ist doch ganz einfach anzupassen, wo du anpassen musst habe ich dir doch als Kommentar in den Code geschrieben :rolleyes:
    Dummerweise wird bei diesem Code:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. MsgBox(ReplaceInString(TextBox1.Text, " ", 3, "%"))
    3. End Sub
    4. Private Function ReplaceInString _
    5. (ByVal sourceString As String _
    6. , ByVal searchString As String _
    7. , ByVal position As Int32 _
    8. , ByVal newValue As String) As String
    9. Dim ar = System.Text.RegularExpressions.Regex.Split(sourceString, searchString)
    10. For i = 0 To ar.Count - 1
    11. ar(i) = searchString & ar(i)
    12. Next
    13. ar(position) = newValue
    14. Return String.Join("", ar)
    15. End Function


    Das Wort nach dem LEERZEICHEN in das LEERZEICHEN verwandelt, und das ursprüngliche LEERZEICHEN wird zum %-Zeichen. Eigentlich soll nur das eigentlich 3. LEERZEICHEN zu einem %-Zeichen umgewandelt werden. Der Rest soll BLEIBEN.

    Wie mache ich das?

    Danke
    Olicrash