Nachtrag Mir ist aufgefallen, dass ein Zeichen nicht übereinstimmt Von "^ [\ t \ n] * ([^ \ t \ n] + (. | \ s) * [^ \ t \ n] +) [\ t \ n] * $" " Behoben zu "^ [\ t \ n] * ([^ \ t \ n] * (. | \ s) * [^ \ t \ n] +) [\ t \ n] * $" `. Das erste Plus wurde ein Sternchen.
Ich hasse reguläre Ausdrücke. Der Punkt ist, die Zeilenumbrüche und Tabulatoren anders als vorher und nachher zu belassen. Ich bin wirklich begeistert, also werde ich einen Artikel schreiben.
public static String trimNewline(String str) {
String regex = "^[\t\n]*([^\t\n]*(.|\\s)*[^\t\n]+)[\t\n]*$";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
if (m.find()) {
return m.group(1);
} else { //"Leere Zeichen" und "Zeichenfolgen, die nur aus Tabulatoren und Zeilenumbrüchen bestehen" stimmen nicht überein und kommen hierher
return "";
}
}
Wenn Sie sich reguläre Java-Ausdrücke ansehen
System.out.println(trimNewline("\t\n\t\nhoge\t\n\t\n")); // hoge
System.out.println(trimNewline("\t\n\t\nhoge")); // hoge
System.out.println(trimNewline("hoge\t\n\t\n")); // hoge
Es gibt auch Zeilenumbrüche und Tabulatoren in der Mitte.
"\t\n\n\n\t\tho\t\t\nhoge\nge\t\n\t\n"
ich auch,
Es wurde nur vorne und hinten sicher entfernt.
Recommended Posts