Feedback

C# - String auf mehrere Teilstrings durchsuchen

Veröffentlicht von am 07.03.2013
(1 Bewertungen)
Diese Methode durchsucht einen String auf mehrere andere Strings. Dabei können Optionen für den Vergleich sowie eine Option für den Suchmodus angegeben werden.

Wenn der Suchmodus auf One steht muss mindestens ein String aus dem Array gefunden werden, bei All müssen alle Teilzeichenfolgen gefunden werden.

Diese Methode ist als Erweiterung für System.String implementiert. Sie kann so verwendet werden:
string s = "Test123";
Console.WriteLine(s.Contains(new string[] { }, StringComparison.CurrentCulture, StringContainsMode.All));
Console.WriteLine(s.Contains(new string[] { }, StringComparison.CurrentCulture, StringContainsMode.One));
Console.WriteLine(s.Contains(new string[] { "123", "456" }, StringComparison.CurrentCulture, StringContainsMode.All));
Console.WriteLine(s.Contains(new string[] { "123", "456" }, StringComparison.CurrentCulture, StringContainsMode.One));
Console.ReadKey();
    static class Extensions
    {
        /// <summary>
        /// Gibt einen Wert zurück, der angibt ob ein- oder mehrere System.String-Objekte in dieser Zeichenfolge vorkommen.
        /// </summary>
        /// <param name="s">Die Zeichenfolge in der gesucht werden soll.</param>
        /// <param name="c">Die zu suchenden Teilzeichenfolgen.</param>
        /// <param name="m1">Der Modus, wie die Teilzeichenketten mit dieser Zeichenfolge verglichen werden sollen.</param>
        /// <param name="m2">Der Modus, wie gesucht werden soll.</param>
        /// <returns>true wenn die Teilzeichenfolgen in den angegebenen Modi in dieser Zeichenfolge vorkommen, andernfalls false.</returns>
        public static bool Contains(this string s, string[] c, StringComparison m1, StringContainsMode m2)
        {
            if (string.IsNullOrWhiteSpace(s) || c.Length == 0)
                return false;

            if (m2 == StringContainsMode.One)
            {
                foreach (string i in c)
                    if (s.IndexOf(i, m1) > -1 && !string.IsNullOrWhiteSpace(i))
                        return true;
                return false;
            }
            else
            {
                foreach (string i in c)
                    if (!(s.IndexOf(i, m1) > -1 && !string.IsNullOrWhiteSpace(i)))
                        return false;
                return true;
            }
        }
    }
    enum StringContainsMode
    {
        One,
        All,
    }

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!