Feedback

C# - Alle Zeilen eines Textes (Strings) Trimmen

Veröffentlicht von am 08.07.2013
(2 Bewertungen)
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)
Snippet in VB übersetzen
public static string TrimAllLines(this string input)
{
    string output = "";
    string[] seperator = { "\r\n" };
    foreach (string line in input.Split(seperator, StringSplitOptions.None))
        output += line.Trim() + Environment.NewLine;
    return output.Trim();
}
Abgelegt unter trim, alle, zeilen, text, all, lines.

3 Kommentare zum Snippet

Koopakiller schrieb am 09.07.2013:
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 \r\n (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:
        static string TrimAllLines(this string s, params char[] chars)
{
string newline = s.Contains("\r\n") ? "\r\n" : s.Contains("\r") ? "\r" : "\n";//Richtigen Zeilenumbruch finden
return String.Join(newline, s.Replace("\r\n", "\n").Split('\r', '\n').Select(x => x.Trim(chars)));//Anhand von LINQ die Zeichen entfernen
}


Ich hoffe mal das war nicht zu viel Kritik ;)
Roman Wagner schrieb am 09.07.2013:
Wie wäre es mit

public static string TrimLines(string lines)
{
return Regex.Replace(lines, @"(^\s+|\s+$)", string.Empty, RegexOptions.Multiline);
}
dariusarnold schrieb am 09.07.2013:
Kein Ding :)
Wie soll man es sonst lernen??
Sofern danke für die Kritik: Nächstes Mal mach ich es besser. ;)
 

Logge dich ein, um hier zu kommentieren!