Java 剪切文本以将其放入框中(工具提示)

Java 剪切文本以将其放入框中(工具提示),java,Java,我正在尝试为我正在执行的程序创建我自己的工具提示,我希望工具提示的文本适合一个框,其中每行的最大字母数是固定的(比如12) 例如,考虑以下字符串: String example = "Hello my name is Martin"; //(23 letters) 现在我想把这个文本放进一个框中 此字符串的正确格式文本如下所示: 第一行:“你好,我的朋友” 第2行:“名称为” 第3行:“马丁” 我真的不知道该怎么解决这个问题。我想到的一件事是在每个“之后拆分输入字符串,如:

我正在尝试为我正在执行的程序创建我自己的工具提示,我希望工具提示的文本适合一个框,其中每行的最大字母数是固定的(比如12)

例如,考虑以下字符串:

String example = "Hello my name is Martin"; //(23 letters)
现在我想把这个文本放进一个框中

此字符串的正确格式文本如下所示:

第一行:“你好,我的朋友”

第2行:“名称为”

第3行:“马丁”

我真的不知道该怎么解决这个问题。我想到的一件事是在每个
之后拆分输入字符串,如:

String[] splittedExample = example.split("\\s+");
但是我需要一个算法来检查一行中可以写入多少数组内容,直到达到最大值12为止

我也愿意接受任何其他解决方案

如果有人知道我是怎么做到的,那就太好了。另外,我希望这些行存储在字符串数组中


谢谢

您可以创建一个递归函数来拆分和包装指定长度的输入字符串。在下面的代码中,我使用了
\n
作为分隔符,您可以根据需要更改它

以下是代码片段:

public static void main (String[] args)
{
    /* Input String */
    String input = "Hello my name is Martin";
    String result = wrapString(input, 12);

    /* String Array */
    String[] strArray = result.split("\n");

    /* Print Result */
    System.out.println(result);
}

/**
 * Wrap String Function
 * Arguments: String, Wrap Size
**/
private static String wrapString(String input, int size) {
    /* Create Char Array */
    char[] inpArr = input.toCharArray();
    /* Wrap Logic */
    if (inpArr.length > size) {
        int temp = 0;
        for (temp = size; temp > 0 && inpArr[temp] != ' '; temp--);
        if (temp > 0) {
            /* Left & Right Substrings */
            String left = input.substring(0, temp);
            String right = input.substring(temp + 1);
            /* Return */
            return left + "\n" + wrapString(right, size);
        }
    }
    /* Return */
    return input;
}
输出:

Hello my
name is
Martin

您可以编写自己的方法来实现这一点:

public static String getLimitedString(String str, int len){
    StringBuilder txt = new StringBuilder();             
    while(str.length() > 0){
        if(str.length() < len){
            txt.append(str.trim());
            str = "";
        }           
        else if(str.charAt(len) == ' '){
            txt.append(str.substring(0, len+1).trim() + "\n");
            str = str.substring(len+1);
        }                   
        else{
            txt.append(str.substring(0, str.lastIndexOf(' ', len)).trim() + "\n");
            str = str.substring(str.lastIndexOf(' ', len));
        }   
    }
    return txt.toString();      
}
输出:

System.out.println(getLimitedString("Hello my name is Martin", 12));
Hello my
name is
Martin

你可以在两个单词后拆分,因为你的预期输出每个单词都有两个单词。不,这只是一个示例字符串,如果两个单词加在一起超过12个字母,整个概念将失败。哦,对不起,没有阅读12个字符的限制。如果字符串中有一个单词超过12个字符怎么办?