回答:
String.trim()
メソッドを使用して、文字列の最初と最後から空白(スペース、改行など)を削除します。
String trimmedString = myString.trim();
String.replaceAll("[\n\r]", "");
String cleanString = dirtyString.strip() ; // Call new `String::string` method.
String::strip…
古いString::trim
メソッドには、奇妙な空白の定義があります。
ここで説明したように、Java 11はクラスに新しいstrip…
メソッドを追加しますString
。これらは、よりUnicodeに詳しい空白の定義を使用しています。のクラスJavaDocでこの定義のルールを参照してくださいCharacter::isWhitespace
。
コード例。
String input = " some Thing ";
System.out.println("before->>"+input+"<<-");
input = input.strip();
System.out.println("after->>"+input+"<<-");
改行を構成するコードポイントについては正確に言及していません。あなたの改行はおそらく次の対象となるコードポイントのリストに含まれていると思いますstrip
:
このJavaコードは、質問のタイトルで尋ねられていることを正確に実行します。つまり、「string-javaの最初と最後から改行を削除します」:
String.replaceAll("^[\n\r]", "").replaceAll("[\n\r]$", "")
行末からのみ改行を削除します。
String.replaceAll("[\n\r]$", "")
行の先頭からのみ改行を削除します。
String.replaceAll("^[\n\r]", "")
文字列が潜在的にある場合はnull
、StringUtils.trim()
-のnullセーフバージョンの使用を検討してくださいString.trim()
。
String trimStartEnd = "\n TestString1 linebreak1\nlinebreak2\nlinebreak3\n TestString2 \n";
System.out.println("Original String : [" + trimStartEnd + "]");
System.out.println("-----------------------------");
System.out.println("Result String : [" + trimStartEnd.replaceAll("^(\\r\\n|[\\n\\x0B\\x0C\\r\\u0085\\u2028\\u2029])|(\\r\\n|[\\n\\x0B\\x0C\\r\\u0085\\u2028\\u2029])$", "") + "]");
同じ質問がありましたが、提供された回答では不十分だったため、これにも回答を追加します。少し考えてみたところ、これは正規表現を使用すると非常に簡単に実行できることがわかりました。
最初から改行を削除するには:
// Trim left
String[] a = "\n\nfrom the beginning\n\n".split("^\\n+", 2);
System.out.println("-" + (a.length > 1 ? a[1] : a[0]) + "-");
そして文字列の終わり:
// Trim right
String z = "\n\nfrom the end\n\n";
System.out.println("-" + z.split("\\n+$", 2)[0] + "-");
これは、文字列をトリミングする最も効率的な方法ではないと確信しています。しかし、それはそのような操作をインライン化するための最もクリーンで最も簡単な方法のようです。
単純な正規表現であるため、同じ方法を使用して、文字のバリエーションや組み合わせを両端からトリミングすることもできます。
split()
は単なる制限です。何度でもマッチしたい場合はオフにしてください。
文字列の最初と最後(中間ではない)の(スペースやタブではなく)改行のみを削除する場合は、次の方法を使用できます。
正規表現を使用して、文字列の先頭()と末尾()から改行(\\r
)と改行()を削除します。\\n
^
$
s = s.replaceAll("(^[\\r\\n]+|[\\r\\n]+$)", "")
完全な例:
public class RemoveLineBreaks {
public static void main(String[] args) {
var s = "\nHello\nWorld\n";
System.out.println("before: >"+s+"<");
s = s.replaceAll("(^[\\r\\n]+|[\\r\\n]+$)", "");
System.out.println("after: >"+s+"<");
}
}
それは出力します:
before: >
Hello
World
<
after: >Hello
World<
String text = readFileAsString("textfile.txt");
text = text.replace("\n", "").replace("\r", "");