Feedback

String auf mehrere Teilstrings durchsuchen

Sprache: C#

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 [u]One[/u] steht muss mindestens ein String aus dem Array gefunden werden, bei [u]All[/u] müssen alle Teilzeichenfolgen gefunden werden. Diese Methode ist als Erweiterung für System.String implementiert. Sie kann so verwendet werden: [code]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();[/code]
    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,
    }
    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,
    }