如何在Java中检测换行符

9

我看过一些关于换行符的帖子,但它们对我没有帮助。我的Java程序应该读取.PHP文件并将源代码分割成逐行格式。问题是我似乎无法真正区分一个换行符和另一个换行符。

我尝试使用/n没用…… 我尝试使用/r/n也没用……

这里有一个例子:

step_B = step_A.replaceAll("\n", "XXX");

我试图用单词XXX替换换行符,但没有成功。

以下是我想要分割的PHP示例,我使用分号作为分隔符成功地分离了行,但现在需要进一步优化。

$ALL_AUTH = mysql_fetch_row($author_lookup);
    //preparing to display the output in the table
    echo "<tr>";

我希望您可以输出类似以下的内容。
INFO:  $ALL_AUTH = mysql_fetch_row($author_lookup)

INFO:  //preparing to display the output in the table 

INFO:  echo "<tr>"

但我得到了这个。
INFO:  $ALL_AUTH = mysql_fetch_row($author_lookup)

INFO:  //preparing to display the output in the table  echo "<tr>"

这个应用似乎无法检测到单词“table”后面的换行符。有没有办法解决?最好不要硬编码单词“table”或其他类似的内容。

哦,我找到错误了,我在之前的阶段通过一些正则表达式对代码块进行了转换,这搞乱了换行符......代码块变成了一行文本!因此没有换行符。感谢您的时间!


1
在Windows上使用"\n"分隔符。如果您正在使用Java 7,则始终可以通过System.lineSeparator()获取当前操作系统使用的行分隔符。对于旧版本,您可以使用System.getProperty("line.separator")。请注意,这仅在文件是在与您相同的操作系统上创建时才有用。 - Fallup
3个回答

19
如果您已经有一个字符串类型的数据:
String[] lines = string.split("\r\n|\n|\r");
for (String line : lines) {
    System.out.println(line);
}

或者直接从文件中读取行:

BufferedReader br = new BufferedReader(new FileReader("myfilename"));
String line = null;
while ((line = br.readLine()) != null) {
    System.out.println(line);
}

Java 7+提供了一种方便的方法,可以直接从文件系统中读取行:

Path path = FileSystems.getDefault().getPath("myfilename");
List<String> lines = Files.readAllLines(path, Charset.defaultCharset());
for (String line : lines) {
    System.out.println(line);
}

Java不会自动检测字符集,因此当读取文本文件时,您需要负责正确设置字符集;否则可能会出现字符读取不正确的情况。别忘记做好整理工作:关闭文件句柄(.close())。


2
可以直接使用BufferedReader逐行读取文本文件。 - Neet

0

我相信我有一个解决方案。你说的/n什么也没做是对的。然而,Java使用\n来分隔行。请注意反斜杠而不是斜杠。

尝试使用\n而不是/n

编辑

实际上,我刚刚重新阅读了你的代码。根据那个,你做得很好。只要确保你的实际代码是这样的。否则,这个答案对你没有帮助,但它可能会帮助其他人。


0

根据您用于读取PHP的Java类,使用类似BufferedReader.readLine的东西。它将为您抓取一行文本,而无需担心\n\r\n的疯狂。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接