我想將文本保存到文件中,以便某些段落縮進(段落的每一行都縮進)。我正在使用BufferedWriter
或Scanner
或其他。我會如何去做這個不計數字符?將縮進文本寫入文件
0
A
回答
2
您必須找到所有換行符,並在每個換行符後面插入適當的空格。
因此,代碼將始終需要查看每個字符,並且可能還需要解析文本才能找到要縮進的位置和位置。
你可以實現你的java.io.Writer
來處理解析和格式。儘管最有效的方法是直接在char緩衝區上工作,但它比創建一個新的String並使用String函數複雜得多,因此它通常最好在效率之前達到穩定。
如果縮進整個文件一樣,你可以做一個簡單的String.replaceAll(),並以新行後跟一個數量的空格代替換行。如果你需要動態的縮進,你可能需要解析(找到),其中縮進級別的變化,如果換行或縮進級別變更確認每一個字符,現在買它越來越複雜......
0
這裏有一個解決方案。該方法用縮進取代所有換行符。縮進級別需要撥打indent()
。要取消預約,請撥打unindent()
方法。
public class IndentPrintWriter extends java.io.PrintWriter
{
private boolean newLine;
private String singleIndent = " ";
private String currentIndent = "";
public IndentPrintWriter(Writer pOut, String indent)
{
super(pOut);
this.singleIndent = indent;
}
public void indent()
{
currentIndent += singleIndent;
}
public void unindent()
{
if (currentIndent.isEmpty()) return;
currentIndent = currentIndent.substring(0, currentIndent.length() - singleIndent.length());
}
@Override
public void print(String pString)
{
// indent when printing at the start of a new line
if (newLine)
{
super.print(currentIndent);
newLine = false;
}
// strip the last new line symbol (if there is one)
boolean endsWithNewLine = pString.endsWith("\n");
if (endsWithNewLine) pString = pString.substring(0, pString.length() - 1);
// print the text (add indent after new-lines)
pString = pString.replaceAll("\n", "\n" + currentIndent);
super.print(pString);
// finally add the stripped new-line symbol.
if (endsWithNewLine) println();
}
@Override
public void println()
{
super.println();
newLine = true;
}
}
相關問題
- 1. 將文本寫入文件
- 2. 將俄文文本寫入txt文件
- 3. 將numpy.bool數組寫入壓縮文件?
- 4. 將壓縮的gzipstream寫入文件
- 5. 寫入文件或壓縮文件
- 6. 如何將二進制數據寫入壓縮文件
- 7. 將x次寫入文本文件
- 8. 將json寫入文本文件,jettison
- 9. 將zip內容寫入文本文件
- 10. Perl:將數組寫入文本文件
- 11. 將文本寫入pdf文件
- 12. 將TEXTAREA內容寫入文本文件
- 13. C++多次將文本寫入文件
- 14. Java:將數組寫入文本文件
- 15. 將包信息寫入文本文件
- 16. 將輸出寫入文本文件
- 17. 將整數寫入文本文件
- 18. 將文本寫入文件的中間
- 19. 將信息寫入文本文件
- 20. Python - 將變量寫入文本文件
- 21. PHP Cli將文本寫入文件
- 22. 將文本文件寫入Jar
- 23. 將一整行寫入文本文件
- 24. 在Python中將文本寫入文件
- 25. 如何將文本寫入XML文件?
- 26. 如何將Jsonresult寫入文本文件?
- 27. 將結果寫入文本文件
- 28. 將VBA詞典寫入文本文件
- 29. ipad - 將NSString寫入文本文件
- 30. 將My.Settings寫入文本文件
那麼,你使用的是什麼類?爲什麼你需要數字字符?你有沒有做過任何嘗試?如果是這樣,我們可以看到你的代碼? – Jeffrey
我正在使用BufferedWriter,但我無論如何都陷入了困境。我沒有做出任何嘗試,因爲我無法找到合適的班級使用。我不認爲我需要數字,但它是一個可行的黑客。謝謝蘇格拉底。 –
你需要一個算法來確定一個給定的段落的縮進。你有嗎? –