如何将一堆连续的空白行压缩成一个空白行?

时间:2013-10-10 21:29:21

标签: java

我正在从一个单独的文件中读取输入,我无法弄清楚如何压缩一堆空行而只是打印一行。例如,如果我的输入文件有两个由14个空白行分隔的段落,则段落应该用一个空行分隔,而不是14个空行作为输出。

2 个答案:

答案 0 :(得分:2)

当您逐行阅读时,请检查每一行以查看它是否为空(匹配正则表达式^\s*$line.trim().isEmpty())。当输入行为空时,设置一个布尔值,例如seenBlankLine为真。在后续空白行中,如果布尔值为true,则不处理该行。当遇到非空行时,请记住将布尔值设置为false。

答案 1 :(得分:0)

按字符阅读char并避免重复回车换行

InputStream is = null;
char c; 
int i;

try {
   is = new FileInputStream('/path/to/file');

   StringBuffer sb = new StringBuffer();
   while ((i = is.read()) != -1) {
       c = (char)i;

       if (c == '\n' || c == '\r') {
           int length = sb.length();
           if (length == 0 || (length != 0 && sb.charAt(length - 1) != '\n')) {
               sb.append(c);
           }
       } else {
           sb.append(c);
       }     
   }
} catch (Exception e) {
   ...
}
return sb.toString();