String.Replace ohne Visual Basic Namespace

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    String.Replace ohne Visual Basic Namespace

    Hi,

    ich möchte in einem String gern eine Userid durch eine andere ersetzen.

    So hab ich das kodiert:

    VB.NET-Quellcode

    1. RealBookmarksList(i) = Replace(RealBookmarksList(i), txtOldUserid.Text, txtNewUserid.Text)


    Das funktioniert auch.

    Blöde ist nur, dass ich dazu den Visual Basic Namespace aktivieren muss, weil sonst die Replace Function nicht gefunden wird.

    Nun bin ich ja ein gelehriger Schüler und versuche den strengen Ratschlägen der erfahrenen User zu folgen. Im Thread "böse Funktionen" finde ich da den lapidaren Hinweis, dass man stattdessen .Net String.Replace verwenden soll.

    Mit String.Replace kriege ich aber nur eine Überladung, die irgendwie char ersetzen will. Und deshalb will das Dingens nicht laufen.

    Was habe ich falsch verstanden ?

    LG
    Peter

    Peter329 schrieb:

    Replace(...)
    Dir ist bewusst, dass dieser Befehl alle Vorkommen des zu ersetzenden Strings durch den ersetzenden String ersetzt?
    Also "aAaAaAa".Replace("a", "b") macht "bAbAbAb" (Pseudocode).
    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!

    Peter329 schrieb:

    Nun bin ich ja ein gelehriger Schüler und versuche den strengen Ratschlägen der erfahrenen User zu folgen. Im Thread "böse Funktionen" finde ich da den lapidaren Hinweis, dass man stattdessen .Net String.Replace verwenden soll.

    Mit String.Replace kriege ich aber nur eine Überladung, die irgendwie char ersetzen will. Und deshalb will das Dingens nicht laufen.


    Peter329 schrieb:

    Kurz und schmerzlos ! Funktioniert. Ganz einfach Danke !

    Hey - da kann ich vlt noch einen meiner berühmten strengen Ratschläge loswerden :thumbsup:
    Wie konnte es sein, dass du das nicht selbst sofort gefunden hast?
    An was für ein komisches String.Replace bist du bei deiner Recherche geraten, was nur mit "irgendwelchen char" funktioniert?

    Und mach dir nu den Unterschied von OOP und Grütze klar:
    Das vb6-Replace ist eine statische Methode, der man 3 Parameter übergeben muss: 1) den zu durchsuchenden String 2) was darin gesucht wird 3) womit es ersetzt wird.
    Das OOP-Replace ist - OOP - eine Objekt-Methode.
    Also das Replace fliegt nicht irgendwo herum und bearbeitet 3 Strings, die man ihm gibt, sondern der zu durchsuchende Strings ist das Objekt, und das durchsucht sich selber!
    Rods Beispiel:

    VB.NET-Quellcode

    1. 'statt
    2. Dim Result = Replace("aAaAaAa", "a", "b")
    3. 'heisst es
    4. Dim Result = "aAaAaAa".Replace("a", "b")
    Ich hoffe, du erkennst die Vorteile:
    1. weniger Namen fliegen herum, wenn Replace ObjektMember von String ist
    2. Replace fliegt da herum, wo es hingehört
      in die String-Klasse nämlich, deren Objekt-Methode es ja ist.
      Und da findet mans eiglich sofort - gugge Objektbrowser, oder das allermindeste: Schreibe einen konkreten String in den Code (Rods Beispiel), tippe ., und gugge, was Intellisense anbietet.
      Daher nochmal meine Nachhake: Wie konnte es geschehen, dass dir das nicht sofort ins Auge sprang - soweit ich weiß, hast du Kenntnisse genug.
      Oder ist es dir ein Problem, dass es mehrere String.Replace-Objektmethoden gibt? Dann musste dich mit dem Begriff "Überladung" auseinandersetzen, bei Interesse geb ich Link.
    3. die Methode braucht 1 Argument weniger
      Das erhöht Intuitivität und Benutzungs-Sicherheit erheblich, wenn man nur noch 2 Strings durcheinanderbringen kann statt 3.

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „ErfinderDesRades“ ()