java - 剪切文本以适合框(工具提示)

标签 java

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

例如,考虑以下字符串:

String example = "Hello my name is Martin"; //(23 letters)

所以现在我想将此文本放入一个框中。

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

line 1: "Hello my"

line 2: "name is"

line 3: "Martin"

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

String[] splittedExample = example.split("\\s+");

但是我需要一种算法来检查这些数组内容中有多少可以写在一行中,直到达到最大值 12。

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

如果有人知道我如何做到这一点,那就太好了。另外,我希望将这些行存储在一个字符串数组中。

谢谢

最佳答案

您可以编写自己的方法来做到这一点:

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

关于java - 剪切文本以适合框(工具提示),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35658722/

相关文章:

java - 更新主键而不创建重复行?

java - 如何在 entitymanager createNativeMethod 中回滚

java - 使用 JavaMail 在电子邮件中内嵌图像

java - 使页面的一部分在回发时保持完整

java - 如何在Drools中匹配成员对象?

java - 如何将 bean 对象放入 sessionMap,然后使用 Struts 2 属性标记在 jsp 页面上检索其属性

java - JPA/Hibernate "simple"OneToMany 单向/清除集不起作用

java apache poi 内存清空

Java数据库 "insert into"语法错误

java - Gradle 无法将项目依赖项添加到自身,因为它无法将 jar 文件添加到自身