我正在编写一个简单的日记控制台程序。无法真正弄清楚分解用户文本输入的最简单方法是什么。我在字符串中接收日记笔记,然后我希望能够将该字符串打印到控制台,但未格式化的它当然只是在终端上以一长行显示该字符串,使其阅读起来非常不友好。我如何为每个 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
并使用
http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/text/WordUtils.html#wrap(java.lang.String 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);
这将以固定宽度包裹您的字符串,尊重空格“”
没有外部库
你必须实施它:
顺便说一句:我这里没有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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)