如何用換行符分割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和更早的模式

接下來,讓我們使用Stringsplit方法拆分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”