0

public static string GetDefaultDatenbank(string input) { string ausgabe = ""; string name = ""; String pattern = @"(id)|(strer)|(bach)|(sm)|"; String path = @"(rel)[.][0-9][.][0-9]{1,4}|(dev)[.][0-9][.][0-9]{1,5}";

        foreach (Match match in Regex.Matches(input, pattern, RegexOptions.IgnoreCase))
        {
            if (match.Success)
            {
                name = match.Value.ToLower();
            }
            else if (match.Success == false)
            {
                return ausgabe = "Kontrollieren Sie den Pfad.";
            }

        }
        return ausgabe;
C#
Diese Frage melden
gefragt

Punkte: 10

 
Kommentar schreiben
1 Antwort
1

Du hast drei Pfade:

  1. nichts passt (weder if, noch else if) -> return leerer string
  2. match.success (if) -> du setzt name auf nen value, else if wird übersprungen und wenn der Loop dann durch ist returnst du ... tadaaa: nen leeren string
  3. match.success = false (else if): du returnst ausgabe (das zusätzliche assignment ist hier übrigens überflüssig)

Also, selbst wenn es nen Match gibt, würde das vom nächsten gleich wieder überschrieben werden. Das ist ein semantischer Fehler. Da du aber am Ende name nie zurückgibst ist selbst das egal.

Mal angenommen das du jetzt nicht mehrere Matches brauchst und die irgendwie in ne Liste schreiben willst oder zu einem string zusammenbaust, würde es so funktionieren:

static string GetDefaultDatenbank(string input)
{
    const string pattern = @"(id)|(strer)|(bach)|(sm)|";
    foreach (Match match in Regex.Matches(input, pattern, RegexOptions.IgnoreCase))
    {
        if (match.Success)
        {
            return match.Value.ToLower();
        }
    }
    return  "Kontrollieren Sie den Pfad.";
}
Diese Antwort melden
geantwortet

 

Kommentar schreiben