Replace nur wenn Wort alleine steht

  • VB.NET
  • .NET 4.5

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

    Replace nur wenn Wort alleine steht

    Moin.

    Ich habe eine Tabelle mit Kürzeln, die jeweils ersetzt werden sollen, aber nur dann wenn das Wort alleine steht (also vor und hinter dem Wort ein Leerzeichen ist).

    Mein Code bisher:

    Quellcode

    1. For Each kuerzel As DataRow In kuerzelliste.Rows
    2. text = text.Replace(kuerzel.Item(0).ToString & " ", kuerzel.Item(1).ToString & " ")
    3. Next


    Ich hoffe ihr versteht was ich meine ;)

    Würde mich über eine Antwort freuen! 8o
    :D 8o
    @MVN050
    Ich glaube die Kürzel stehen jeweils so in einer Tabelle.
    BezeichnungBez.

    Also macht er das eigentlich schon richtig. Nur müsste es doch dann heißen
    " " & kuerzel.Item(0).ToString() & " ", " " & kuerzel.Item(1).ToString() & " "
    Also mit voranstehenden Leerzeichen.
    Hi habe ich auch schon gedacht, jetzt ist nur das Problem, dass ein Kürzel am Ende und Anfang des Strings nicht ersetzt wird. Ich möchte eigentlich ungern selber ein Leerzeichen ranhängen.

    Trotzdem danke für deine Antwort!
    :D 8o
    Du könntest einfach mehrmals ersetzten.
    Also 1x vorne und hinten Leerzeichen.
    1x nur hinten Leerzeichen und
    1x nur vorne Leerzeichen.


    Oder irgendwie mit RegEx, das ist aber etwas komplizierter.

    C#-Quellcode

    1. ​string text = "Bezeichnung Ein Text mit Bezeichnungen und einer Bezeichnung ist toll. - Bezeichnung - Bezeichnung";
    2. List<List<string>> rows = new List<List<string>>();
    3. rows.Add(new List<string> { "Bezeichnung", "Bez." });
    4. Regex regex;
    5. foreach (List<string> row in rows)
    6. {
    7. regex = new Regex("(^|( ))(" + row[0] + ")(( )|$)");
    8. text = regex.Replace(text, row[1]);
    9. }
    10. MessageBox.Show(text);
    Hmm. Danke ich werde das mal mit mehrmals ersetzten probieren, daran habe ich gar nicht gedacht.

    Grüße

    // Geschaft:

    Ist zwar doof gelöst, aber so funktioniert es:

    Quellcode

    1. Dim regex As Regex
    2. For Each kuerzelrow As DataRow In kuerzelliste.Rows
    3. regex = New Regex("(^|( ))(" + kuerzelrow.Item(0).ToString + ")(( )|$)")
    4. text = regex.Replace(text, " " & kuerzelrow.Item(1).ToString & " ")
    5. Next
    6. If text.Substring(0, 1) = " " Then
    7. text = text.Remove(0, 1)
    8. End If
    :D 8o

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

    @ponmalka Jou.

    timon schrieb:

    aber so funktioniert es
    Bist Du sicher, dass Du alle Fälle erwischt hast?
    Was soll z.B. passieren, wenn vorn 2 oder mehr Leerzeichen stehen?
    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).
    VB-Fragen über PN / Konversation werden ignoriert!