Left() und Len() durch .Substring() ersetzen

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

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von roepke.

    Left() und Len() durch .Substring() ersetzen

    Hallo,

    ich bin gerade dabei den „bösen“ VB6/VB2003 Code durch VB.NET Alternativen zu ersetzen.
    Klappt auch bisweilen wirklich gut und ich find es auch besser lesbar.
    Bin jetzt aber gerade über eine Sache gestolpert, für die mir partout noch keine Lösung eingefallen ist.
    In meinem Code sind z.B. Ausdrücke wie der folgende:

    VB.NET-Quellcode

    1. If Left(_sElementName, Len("ModuleTypeNumber")) = "ModuleTypeNumber" Then
    2. ElseIf Left(_sElementName, Len("dSWRelease")) = "dSWRelease" Then
    3. ElseIf Left(_sElementName, Len("dHWRelease")) = "dHWRelease" Then
    4. End If


    Das wollte ich ersetzen durch

    VB.NET-Quellcode

    1. If _sElementName.Substring(0, "ModuleTypeNumber".Length) = " ModuleTypeNumber "
    2. ElseIf _sElementName.Substring(0, " dSWRelease ".Length) = " dSWRelease "
    3. ElseIf _sElementName.Substring(0, " dHWRelease ".Length) = " dHWRelease "
    4. End If


    Ich frage deshalb Left() ab, weil „ModuleTypeNumber“, "dSWRelease", "dHWRelease" auch an anderen Stellen im ‚_sElementName‘ String vorkommen können, die If-Anweisung aber nur ausgeführt werden soll, wenn diese wirklich ganz links im String stehen.
    Daher würde .Contains() hier auch nicht funktionieren.
    Der Inhalt und die Länge von „_sElementName” kann fast beliebig variieren.
    So lange „_sElementName” genügend lang ist, gibt’s auch keine Probleme. Zur Exception kommt es erst, wenn „_sElementName” kürzer als der ‚Length‘ Parameter der .Substring Funktion ist.
    Left() gab mir True oder False zurück, .Substring() gibt mir True oder ArgumentOutOfRangeException zurück.
    Gibt es einen einfachen Weg (z.B in LINQ – damit kenne ich mich nicht wirklich aus) wie ich das umsetzen kann? Ich würde mir sonst vermutlich eine Sub schreiben müssen, die die Sache mit der Stringlänge abfängt.
    @roepke Bist Du nicht auch der Meinung, dass @VB1963 für seinen Beitrag ein Hilfreich verdient hat?
    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!
    @roepke Wen hast Du eben hier angesprochen? ;)
    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!