如何将段落框架成多行60个字符

时间:2016-06-08 17:35:34

标签: java string

我是Coding地区的新手,如果此问题之前可能已经提出过,我道歉。 我试图达到这样的目标。假设我有一个超过64个字符的段落或行,如I've been using the Lumia 822 for over a month now and I noticed that the moment I reach over 70 characters

在第60个角色,我们注意到了这个词,所以它应该被推到下一行。 预期产出。

I've been using the Lumia 822 for over a month now and I noticed that the moment I reach over 70 characters

你能帮我解决一下如何做到这一点。 我使用了String Tokenizer和substr()但是没有用。

请提供您宝贵的建议。

感谢。

2 个答案:

答案 0 :(得分:0)

一个非常简单的解决方案:

public String appendNewLine(String text, int max) {
    int count = 0;
    StringBuilder output = new StringBuilder();
        for (int i = 0; i < text.length(); i++) {
            char c = text.charAt(i);

            if (count >= max && c == ' ') {
                count = 0;
                output.append("\n");
            } else {
                output.append(c);    
            }
            count++;
        } 
    return output.toString();
}

答案 1 :(得分:0)

此代码将确保每一行严格小于或等于splitLen。之后的任何文字都会被移到下一行。

您可以使用splitLen参数调整线宽。我试图涵盖几个场景。如果有任何遗漏,请指出。

public String splitString(String s, int splitLen){

    StringBuilder sb = new StringBuilder();
    int splitStart = 0;

    while(splitStart < s.length()){

        int splitEnd = splitStart + splitLen;
        splitEnd = splitEnd > s.length() ? s.length() : splitEnd;   // avoid overflow

        int spaceIndex = s.substring(splitStart, splitEnd)
                    .lastIndexOf(" ");

        // look for lasts space in line, except for last line
        if(spaceIndex != -1 && splitEnd != s.length()){
            splitEnd = splitStart + spaceIndex;
        }
        // else (no space in line), split word in two lines..

        sb.append(s.substring(splitStart, splitEnd))
            .append(System.lineSeparator());

        // if ends with space, skip space in next line
        splitStart = splitEnd + (spaceIndex != -1 ? 1 : 0); 
    }

    return(sb.toString());
}