Feedback

C# - String ohne Zeichenentfernung aufsplitten

Veröffentlicht von am 2/12/2013
(2 Bewertungen)
Diese Methoden können einen String an einem Zeichen aufsplitten ohne das Trennzeichen zu entfernen.
Es kann angegeben werden ob das Trennzeichen vor oder hinter den Teilstrings stehen soll. Außerdem können leere Teilstrings entfernt werden.

Diese Methoden sind als Erweiterungen für string geschrieben.
        /// <summary>
        /// Spaltet einen String an einem Zeichen auf.
        /// </summary>
        /// <param name="s">Der aufzuspaltende String.</param>
        /// <param name="c">Das Trennzeichen.</param>
        /// <param name="after"><c>true</c> wenn das Trennzeichen vor den Zeichen ketten stehen soll, andernfalls <c>false</c>.</param>
        /// <returns>Die Teilstrings.</returns>
        public static string[] Split(this string s, char c, bool after)
        {
            return Split(s, c, after, StringSplitOptions.None);
        }
        /// <summary>
        /// Spaltet einen String an einem Zeichen auf.
        /// </summary>
        /// <param name="s">Der aufzuspaltende String.</param>
        /// <param name="c">Das Trennzeichen.</param>
        /// <param name="after"><c>true</c> wenn das Trennzeichen vor den Zeichen ketten stehen soll, andernfalls <c>false</c>.</param>
        /// <param name="o">Weitere Optionen zum aufsplitten</param>
        /// <returns>Die Teilstrings.</returns>
        public static string[] Split(this string s, char c, bool after, StringSplitOptions o)
        {
            string t = "";
            //Spezielle Zeichen in Regex
            if (c == '.' || c == ',' || c == '+' || c == '-' || c == '*' || c == '(' || c == ')'
             || c == '[' || c == ']' || c == '{' || c == '}' || c == '|' || c == '?' || c == '\\')
                t = string.Concat(@"\", c);
            else if(c == ' ')
                t = @"\s"; //Leerzeichen
            else
                t = c.ToString(); //Sonstiges Zeichen
            if (o == StringSplitOptions.None)
                if (after)
                    return Regex.Split(s, string.Concat(@"(?=", t, @")"));
                else
                    return Regex.Split(s, string.Concat(@"(?<=", t, @")"));
            else
            {
                List<string> l = new List<string>();
                if (after)
                    l.AddRange(Regex.Split(s, string.Concat(@"(?=", t, @")")));
                else
                    l.AddRange(Regex.Split(s, string.Concat(@"(?<=", t, @")")));
                l.Remove("");//Leere Items entfernen
                return l.ToArray();
            }
        }
Abgelegt unter split, string, regex, trennen, erweiterungsmethode.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!