我正在閱讀來自單獨文件的輸入,而且我無法弄清楚如何濃縮一堆空白行,而只是打印一行。例如,如果我的輸入文件有兩個由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
當您讀取空行時,如果上一行輸入行爲空白,請不要輸出。請閱讀下一個。 –