Zeichenkette per Regel ersetzen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Rolle85.

    Zeichenkette per Regel ersetzen

    Ausgelagert aus Einzelne Buchstaben Ersetzten !!!. ~Thunderbolt

    Mal ein eine andere Frage,
    kann man auch mehrere Zeichenfolgen mit undefinierter Endung gegen ein bestimmtes zeichen ändern?

    Sollte dann so aussehen:
    E0000001
    E0000002
    E0000003 das ganze per Knopfdruck gegen ein Zeichen meiner Wahl ändern..
    E0000004
    usw.

    im Folgendem Beispiel funktioniert es für den EINEN Wert

    VB.NET-Quellcode

    1. Private Sub Bersetzen_Click(sender As Object, e As EventArgs) Handles Bersetzen.Click
    2. Dim txt = IO.File.ReadAllText(TextBox1.Text)
    3. txt = txt.Replace("E0000001", TextBox5.Text)
    4. IO.File.WriteAllText(TextBox1.Text, txt)
    5. End Sub

    Will aber Zig Tausend Werte mit einem Knopfdruck in "-" ändern
    komm da nicht weiter, hatte an das klassische Sternchen gedacht, vertan sprach der Hahn

    VB.NET-Quellcode

    1. Private Sub Bersetzen_Click(sender As Object, e As EventArgs) Handles Bersetzen.Click
    2. Dim txt = IO.File.ReadAllText(TextBox1.Text)
    3. txt = txt.Replace("E00*", TextBox5.Text)
    4. IO.File.WriteAllText(TextBox1.Text, txt)
    5. End Sub


    Danke im Vorraus

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

    Warum machst du denn nicht einfach einen eigenen Thread auf?

    Wenn du eine Zeichenkette mit Hilfe von WildCards ersetzen willst, kannst du Regex nehmen. Kannst aber auch eine Schleife nutzen, wobei ich Regex einfacher finde.

    VB.NET-Quellcode

    1. Dim x As String = String.Format("E001 XYZ{0}E002 XYZ{0}E003 XYZ{0}E004 XYZ", Environment.NewLine)
    2. x = Regex.Replace(x, "E[0-9]+ ", "-")

    RegEx Tutorial - Blutige Anfänger und Fortgeschrittene
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin

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

    Wenn es sich nur um ein einzelnes Zeichen handelt, finde ich diese Funktion auch noch recht gut.

    VB.NET-Quellcode

    1. Dim c As Char = "0"c
    2. Dim str = "E00* B00* C00* D00* K00* I00* O00* R00* Z00* T00* W00*".Replace("*"c, c)


    Ich vermute mal, du meinst eventuel das.

    VB.NET-Quellcode

    1. Dim strArr = {"E0000001", "E0000002", "E0000003", "E0000004", "E0000005", "E0000006", "E0000007"}
    2. Dim strArr2 = New String(strArr.Length - 1) {}
    3. For i As Int32 = 0 To strArr.Length - 1
    4. 'strArr2(i) = String.Format("{0}-", strArr(i).Substring(0, 3))
    5. strArr2(i) = String.Format("{0}{1}", strArr(i).Substring(0, 3), TextBox5.Text)
    6. Next


    Freundliche Grüsse

    exc-jdbi

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „exc-jdbi“ ()

    hey Super, wieder mal Megaschnell Antworten bekommen!
    ​Warum machst du denn nicht einfach einen eigenen Thread auf?

    Wusste nicht wie ich es benennen soll, hab stunden nach dieser Unbekannten endung gesucht und nichts gefunden.

    habe das ganze jetzt ein bisschen anders gelöst da das vorher noch nicht ganz funktioniert hatte

    VB.NET-Quellcode

    1. ​Private Sub Bersetzen_Click(sender As Object, e As EventArgs) Handles Bersetzen.Click
    2. Dim txt = IO.File.ReadAllText(TextBox1.Text)
    3. txt = Regex.Replace(txt, "id=""M[0-9]+", "id=""-")
    4. txt = Regex.Replace(txt, "id=""E[0-9]+", "id=""-")
    5. txt = Regex.Replace(txt, "id=""K[0-9]+", "id=""-")
    6. txt = Regex.Replace(txt, "id=""G[0-9]+", "id=""-")
    7. txt = Regex.Replace(txt, "id=""B[0-9]+", "id=""-")
    8. txt = Regex.Replace(txt, "id=""V[0-9]+", "id=""-")
    9. txt = Regex.Replace(txt, "id=""R[0-9]+", "id=""-")
    10. txt = Regex.Replace(txt, "id=""S[0-9]+", "id=""-")
    11. txt = Regex.Replace(txt, "id=""D[0-9]+", "id=""-")
    12. txt = Regex.Replace(txt, "id=""C[0-9]+", "id=""-")
    13. IO.File.WriteAllText(TextBox1.Text, txt)
    14. MsgBox("ETC-ID´s erfolgreich gegen ein ""-"" ersetzt")
    15. Me.Close()
    16. End Sub


    Aber trotzdem Danke!
    Hab allerdings noch nicht den zusammenhang rausgefunden was die unbekannte definiert..
    ist das die Eckklammer? oder die zahlen in der Eckklammer? oder das plus dahinter?
    :thumbsup:
    das nennt sich RegularExpressions und ist eine reguläre Sprache.
    in eckige Klammern schreibt man eine Auswahl von Möglichen inhalten in diesem Fall die Zahlen von 0-9 ist dabei kurzschreibweise für alle Zahlen von 0 bis einschließlich 9, das plus bedeutet, das der zuvor definierte Ausdruck mindestens einmal vorkommt, aber sich beliebig oft wiederholen kann: D.h. er überprüft erst ob da ein Zeichen von 0-9 ist wenn das nicht der Fall ist(also kein Zeichen vorhanden), dann matcht es nicht und es findet an dieser stelle keine ersetzung statt. Falls doch überpfrüft er das nächste Zeichen und guckt wieder ob eine Zahl zwischen 0-9 vorhanden ist, das ganze so oft wie möglich, das wird dann am ende ersetzt...

    martin-fredrich.de/programmier…ere-ausdruecke-in-csharp/
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    BESTEN DANK!

    man wird hier jeden Tag schlauer 8o

    Dank dieses "Wissens" konnte ich den Code jetzt auch in eine Zeile zusammenfassen :thumbsup:

    VB.NET-Quellcode

    1. ​txt = Regex.Replace(txt, "id=""[A-Z][0-9]+", "id=""" & TextBox2.Text & "")

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