我正在编写一个简单的日记控制台程序。真的无法找出最简单的方法来拆分来自用户的文本输入。我将日记记在一个字符串中,然后我希望能够将该字符串打印到控制台上,但是未格式化它当然只是在终端上的一长行中显示了该字符串,这使其阅读起来非常不友好。如何在每x个字符左右用新行显示字符串?我能找到的所有关于文本格式的信息都是System.out.printf(),但这仅具有最少数量的要打印的字符。
最佳答案
我建议使用一些外部库,例如Apache commons:
http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/text/WordUtils.html
和使用
http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/text/WordUtils.html#wrap(java.lang.String,int)
static final int FIXED_WIDTH = 80;
String myLongString = "..."; // very long string
String myWrappedString = WordUtils.wrap(myLongString,FIXED_WIDTH);
这将包裹您的String,并以固定宽度保留空格''
,不带外部库
您将必须实现它:
顺便说一句:我这里没有Java编译器来测试它,所以如果它不直接编译就不要生气。
private final static int MAX_WIDTH = 80;
public String wrap(String longString) {
String[] splittedString = longString.split(" ");
String resultString = "";
String lineString = "";
for (int i = 0; i < splittedString.length; i++) {
if (lineString.isEmpty()) {
lineString += splittedString[i];
} else if (lineString.length() + splittedString[i].length() < MAX_WIDTH) {
lineString += splittedString[i];
} else {
resultString += lineString + "\n";
lineString = "";
}
}
if(!lineString.isEmpty()){
resultString += lineString + "\n";
}
return resultString;
}