Feedback

Alle Zeilen eines Textes (Strings) Trimmen

Sprache: C#

Eigentlich eine ziemliche einfache Methode. Sie entfernt Text am Anfang und Ende jeder Zeile eines Textes. (Wendet die String.Trim()-Methode auf jede Zeile an)
public static string TrimAllLines(this string input)
{
    string output = "";
    string[] seperator = { "rn" };
    foreach (string line in input.Split(seperator, StringSplitOptions.None))
        output += line.Trim() + Environment.NewLine;
    return output.Trim();
}
public static string TrimAllLines(this string input)
{
    string output = "";
    string[] seperator = { "rn" };
    foreach (string line in input.Split(seperator, StringSplitOptions.None))
        output += line.Trim() + Environment.NewLine;
    return output.Trim();
}

3 Kommentare

  1. Du solltest auch noch auf r abfragen. Denn je nach Kodierung kann der Zeilenumbruch ein anderes Steuerzeichen darstellen. Um doppelte Zeilenumbrüche zu verweiden, sollte man rn (Windows) vorher gegen n austauschen. Das richtige wieder zusammen führen (r oder n oder beides) wäre natürlich auch nicht schlecht.
    Anstelle mittels += den String wieder zusammen zu setzen, solltest du einen StringBuilder nutzen. Dieser ist schneller. Oder natürlich String.Join(string, string[]).
    Außerdem ist es empfehlenswert Ein Zeichenarray anzunehmen, welches der Trim-Methode übergeben wird. Dadurch kann man die Methode vielseitiger einsetzen.
    Außerdem wäre es als Erweiterungsmethode für string einfacher zu benutzen.

    So und für alle die LINQ mögen:
    [code] static string TrimAllLines(this string s, params char[] chars)
    {
    string newline = s.Contains(„rn“) ? „rn“ : s.Contains(„r“) ? „r“ : „n“;//Richtigen Zeilenumbruch finden
    return String.Join(newline, s.Replace(„rn“, „n“).Split(‚r‘, ’n‘).Select(x => x.Trim(chars)));//Anhand von LINQ die Zeichen entfernen
    }[/code]

    Ich hoffe mal das war nicht zu viel Kritik 😉

  2. Wie wäre es mit
    [code]
    public static string TrimLines(string lines)
    {
    return Regex.Replace(lines, @“(^s+|s+$)“, string.Empty, RegexOptions.Multiline);
    }
    [/code]

  3. Kein Ding 🙂
    Wie soll man es sonst lernen??
    Sofern danke für die Kritik: Nächstes Mal mach ich es besser. 😉