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”
0 评论