我正在编写一个简单的日记控制台程序。真的无法找出最简单的方法来拆分来自用户的文本输入。我将日记记在一个字符串中,然后我希望能够将该字符串打印到控制台上,但是未格式化它当然只是在终端上的一长行中显示了该字符串,这使其阅读起来非常不友好。如何在每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;
}

10-06 06:11
查看更多