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