如何用換行符分割Java字符串
- java
1.概述
在本教程中,我們將研究通過換行符分割Java字符串的不同方法。由於換行符在各種操作系統中都不同,因此我們將研究覆蓋Unix,Linux,Mac OS 9和更早版本,macOS和Windows OS的方法。
2.用換行符String
2.1 System#lineSeparator
方法按換行符拆分String
鑑於換行符在不同的操作系統中是不同的,當我們希望代碼獨立於平台時,可以使用系統定義的常量或方法。
System#lineSeparator
方法返回基礎操作系統的行分隔符字符串。它返回系統屬性line.separator
的值。
System#lineSeparator
方法返回的行分隔符字符串String#split
方法一起使用,以換行符分隔String
String[] lines = "Line1\r\nLine2\r\nLine3".split(System.lineSeparator());
結果行將是:
["Line1", "Line2", "Line3"]
2.2 使用正則表達式按換行符拆分String
接下來,讓我們開始研究用於在不同操作系統中分隔行的不同字符。
“ \n
”字符分隔Unix,Linux和macOS中的行。另一方面,“ \r\n
”字符在Windows環境中分隔行。最後,“ \r
”字符在Mac OS 9及更早版本中分隔行。
因此,在使用正則表達式將字符串分隔為換行符時,我們需要照顧所有可能的換行符。
最後,讓我們看一下將覆蓋所有不同操作系統的換行符的正則表達式模式。也就是說,我們需要尋找“ \ n”,“ \ r \ n”和“ \ r”模式。通過使用Java中的正則表達式可以很容易地做到這一點。
涵蓋所有不同換行符的正則表達式模式將是:
"\\r?\\n|\\r"
分解來看,我們看到:
-
\\n
= Unix,Linux和macOS模式 -
\\r\\n
= Windows環境模式 -
\\r
= MacOS 9和更早的模式
接下來,讓我們使用String
# split
方法拆分Java String
。讓我們看幾個例子:
String[] lines = "Line1\nLine2\nLine3".split("\\r?\\n|\\r");
String[] lines = "Line1\rLine2\rLine3".split("\\r?\\n|\\r");
String[] lines = "Line1\r\nLine2\r\nLine3".split("\\r?\\n|\\r");
所有示例的結果行將是:
["Line1", "Line2", "Line3"]
2.3 在Java 8中按換行符拆分String
Java 8提供了一個“\R”
模式,該模式與任何Unicode換行符序列匹配,並涵蓋了不同操作系統的所有換行符。因此,在Java 8或更高版本中,我們可以使用“\R”
模式代替“\\r?\\n|\\r”
讓我們看幾個例子:
String[] lines = "Line1\nLine2\nLine3".split("\\R");
String[] lines = "Line1\rLine2\rLine3".split("\\R");
String[] lines = "Line1\r\nLine2\r\nLine3".split("\\R");
同樣,所有示例的最終輸出行將是:
["Line1", "Line2", "Line3"]
3.結論
在這篇快速的文章中,我們研究了在不同的操作系統中可能遇到的不同的換行符。此外,我們看到瞭如何使用我們自己的正則表達式模式以及從Java 8開始可用“\R”