8

是的,我已经阅读了其他一些关于换行符的帖子,但它们对我没有帮助。

我的 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”一词结尾后有换行符。有没有办法做到这一点 ?最好不要对单词表或类似的东西进行硬编码。

哦,我发现了错误,我在早期阶段通过一些正则表达式对代码块进行了转换,这弄乱了换行符....代码块变成了一大行文本!因此没有换行符感谢您的时间!

4

3 回答 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() 您的文件句柄。

于 2013-01-15T21:27:48.813 回答
0

我相信我有一个解决方案。你是对的, /n 什么都不做。但是,java 使用\n. 注意反斜杠而不是斜杠。

尝试使用\n而不是/n

编辑

实际上,我只是重新阅读了您的代码。据此,您做得正确。只要确保你的实际代码是这样的。否则,此答案对您没有帮助,但可能对其他人有所帮助。

于 2013-01-15T21:27:29.660 回答
0

根据您用于读取 PHP 的 Java 类,使用类似BufferedReader.readLine的东西。它会为您抓取一行文字,而您不必担心\n\r\n发疯。

于 2013-01-15T21:28:31.093 回答