RegEx-Problem bei der C# nach VB.NET Konvertierung

  • VB.NET

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

    RegEx-Problem bei der C# nach VB.NET Konvertierung

    Hi,
    ich habe (wieder einmal) ein größeres Projekt von C# nach VB.NET konvertiert. Dabei habe ich die Funktionen dieses Konverters benutzt: carlosag.net/Tools/CodeTranslator/
    Nun bin ich auf ein kleines Problem gestoßen. Im Original Quelltext steht:

    Quellcode

    1. Regex filter = textBox3.TextLength > 0 ? new Regex(textBox3.Text, RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled) : null;

    Der Code-Konverter übersetzt mir aber nur

    VB.NET-Quellcode

    1. Dim filter As Regex = (textBox3.TextLength > 0)

    was ja aber nicht sein kann.
    Ich habe die verschiedensten Möglichkeiten ausprobiert zB:

    VB.NET-Quellcode

    1. Dim filter As Regex = textBox3.TextLength > 0 ? new Regex(textBox3.Text, RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled)
    2. '-----------------------------------------------------------------------
    3. Dim filter As Regex = new Regex(textBox3.Text, RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled)
    4. '-----------------------------------------------------------------------
    5. Dim filter As Regex = new Regex(textBox3.Text, RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled, textBox3.TextLength > 0 ?)

    Aber alles davon schlägt fehl.
    Wisst ihr vielleicht wie man das übersetzten könnte?
    --- Zurzeit inaktiv ---
    Manchmal hilft es auch, programmieren zu können: IIf

    VB.NET-Quellcode

    1. Dim filter As Regex = CType(IIf(textBox3.TextLength > 0, New Regex(textBox3.Text, RegexOptions.IgnoreCase Or RegexOptions.CultureInvariant Or RegexOptions.IgnorePatternWhitespace Or RegexOptions.Compiled), Nothing), Regex)
    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!

    Live schrieb:

    Quellcode

    1. Regex filter = textBox3.TextLength > 0 ? new Regex(textBox3.Text, RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled) : null;




    Eine Pipe (|) ist ein "Or" (Bitoperation, kein logischer Operator)

    Übersetzt kommt folgendes Resultat:


    VB.NET-Quellcode

    1. Dim filter As Regex = if(textBox3.TextLength > 0, new Regex(textBox3.Text, RegexOptions.IgnoreCase Or RegexOptions.CultureInvariant Or RegexOptions.IgnorePatternWhitespace Or RegexOptions.Compiled), nothing)
    Von meinem iPhone gesendet