我正在阅读来自单独文件的输入,而且我无法弄清楚如何浓缩一堆空白行,而只是打印一行。例如,如果我的输入文件有两个由14个空白行分隔的段落,则这些段落应该由一个空白行而不是14个空白行作为输出。如何将一串连续的空行压缩到一个空白行中?
回答
在逐行阅读时,检查每一行以查看它是否为空(匹配正则表达式^\s*$
或line.trim().isEmpty()
)。当输入行为空时,设置一个布尔值,例如seenBlankLine
为true。在后续的空行上,如果布尔值为true,则不要处理该行。请记住,当遇到非空白行时,将布尔值设置为false。由焦
@HovercraftFullOfEels更新,谢谢。 –
读取字符,避免重复回车和换行符:
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();
你的是一个非常低级的解决方案。我认为更高层次的解决方案会更好,比如使用StringBuilder,Scanner和while循环,并在需要的地方调用“continue”。这样做我敢打赌,这个代码会减少60%以上,同时使它更具可读性,适应性和可调试性。另外,为什么使用StringBuffer而不是StringBuilder。哪里可能有一个可能的线程问题,这个局部变量? –
@Hovercraft完整的鳗鱼:对!我只是想展示不同的东西! :) – user278064
- 1. 如何在Perl中将4个连续的空白行压缩为一行代码
- 2. 在C++中读取一个文件时,将多个连续的空白行替换为单个空白行
- 3. 我如何压缩空行
- 4. 如何找到连续的空白点?
- 5. 如何寻找连续空行,并将其转换为一个
- 6. 如何将一个字符串以两个连续的空格
- 7. 如何在Microsoft Word 2007邮件合并中压缩空白行?
- 8. 与多个连续的空白空间一样
- 9. 如何在Kotlin中执行一个空的非空字符串?
- 10. 如何减少Crystal Reports中的空白行/空白行?
- 11. 如何删除多个文件中的第一个空白行?
- 12. 的R - 连续非空行
- 13. 填补空白行依赖于一个/下一个非空值
- 14. TTntComboBox空白第一行
- 15. SqlDeveloper SPOOL:第一行空白
- 16. 我将如何获得每一个空白行?
- 17. 将缩进添加到Java代码中的空白行(Eclipse IDE)
- 18. 选择空白行后的每一行
- 19. 如何添加空白记录/行到一个winform gridview?
- 20. 删除一个字符串中的新行后的空白空间mysql
- 21. 运行一个简单的空白行遇到问题删除
- 22. 将行复制到另一个表的下一个空行
- 23. 连续滑块侦听器创建一个新的空白图
- 24. 删除最后一个空白行
- 25. 宏复制到另一张纸上的下一个空白行
- 26. 从StringBuilder中删除连续的空白行
- 27. 将字节压缩为可读字符串(无空或行尾)
- 28. 压缩空格字符串
- 29. 删除一个golang作家的连续空行
- 30. XML字符串的第一行上的空白行
一些代码吗? – maksimov
你有什么尝试?作为一个提示,如果你将整个文件读入一个'String'中,那么有14条空行的部分看起来就像'\ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n',但应该看起来像'\ n \ n'。 – nhgrif
当您读取空行时,如果上一行输入行为空白,请不要输出。请阅读下一个。 –