当前位置: 首页 > 面试题库 >

大字符串在Java中分成最大长度的行

柳墨一
2023-03-14
问题内容
String input = "THESE TERMS AND CONDITIONS OF SERVICE (the Terms) ARE A LEGAL AND BINDING AGREEMENT BETWEEN YOU AND NATIONAL GEOGRAPHIC governing your use of this site, www.nationalgeographic.com, which includes but is not limited to products, software and services offered by way of the website such as the Video Player, Uploader, and other applications that link to these Terms (the Site). Please review the Terms fully before you continue to use the Site. By using the Site, you agree to be bound by the Terms. You shall also be subject to any additional terms posted with respect to individual sections of the Site. Please review our Privacy Policy, which also governs your use of the Site, to understand our practices. If you do not agree, please discontinue using the Site. National Geographic reserves the right to change the Terms at any time without prior notice. Your continued access or use of the Site after such changes indicates your acceptance of the Terms as modified. It is your responsibility to review the Terms regularly. The Terms were last updated on 18 July 2011.";

//text copied from http://www.nationalgeographic.com/community/terms/

我想将这个大字符串分成几行,每行中的内容不应超过MAX_LINE_LENGTH个字符。

到目前为止我尝试过的

int MAX_LINE_LENGTH = 20;    
System.out.print(Arrays.toString(input.split("(?<=\\G.{MAX_LINE_LENGTH})")));
//maximum length of line 20 characters

输出:

[THESE TERMS AND COND, ITIONS OF SERVICE (t, he Terms) ARE A LEGA, L AND B ...

它造成 断字 。我不要这个 而不是我想要这样的输出:

[THESE TERMS AND , CONDITIONS OF , SERVICE (the Terms) , ARE A LEGAL AND B ...

添加了另一个条件: 如果单词长度大于MAX_LINE_LENGTH,则该单词应拆分。

解决方案应该没有外部罐子的帮助。


问题答案:

只需逐个单词地遍历字符串,并在单词超过限制时中断。

public String addLinebreaks(String input, int maxLineLength) {
    StringTokenizer tok = new StringTokenizer(input, " ");
    StringBuilder output = new StringBuilder(input.length());
    int lineLen = 0;
    while (tok.hasMoreTokens()) {
        String word = tok.nextToken();

        if (lineLen + word.length() > maxLineLength) {
            output.append("\n");
            lineLen = 0;
        }
        output.append(word);
        lineLen += word.length();
    }
    return output.toString();
}

我只是以徒手的方式输入了该内容,您可能需要进行一些操作才能使其编译。

错误:如果输入的单词比输入的单词长maxLineLength,则会添加到当前行,而不是添加到自己的太长的行上。我假设您的行长大约为80或120个字符,在这种情况下,这不太可能成为问题。



 类似资料:
  • 问题内容: 在Java中,参考方法调用,对象可能具有的最大大小是多少? 我知道返回a的大小为; 问题答案: 考虑到该类的方法返回,则该方法将返回的最大长度为,即(或大约20亿)。 在数组的长度和索引方面(例如,这可能是内部数据表示的实现方式String),Java SE 7版的《 Java语言规范》的第10章:数组表示以下内容: 数组中包含的变量没有名称。而是由使用非负整数索引值的数组访问表达式引

  • 问题内容: 那么PHP中的大小可以达到多少呢?我已经尝试过测试,但是我不确定系统内存是否足够(〜2gb)。我认为必须有某种限制。字符串太大时会发生什么?它是串联的,还是PHP抛出异常? 问题答案: http://php.net/manual/en/language.types.string.php说: 注意:自PHP 7.0.0起,对64位版本中的字符串长度没有特殊限制。在32位版本和较早版本中,

  • 问题内容: 如果与环境无关,那么python字符串中理论上最大的字符数是多少? 另外,如果它与版本号不同,我想在python 2.5.2中知道它 问题答案: 使用64位Python安装和(例如)64 GB的内存,大约63 GB的Python 2字符串应该是非常可行的(如果不是最快的话)。如果您可以将内存升级到更大的程度(当然,这将花费您一臂之力和一条腿),则最大可行字符串应成比例地变长。(我不建议

  • 问题内容: Python 2嵌入了“所有名称字符”字符串,最长20个代码点: 在Python 3.7中,这个数字似乎增加到4096: 首先:是什么促使了这一变化? 其次,此限制在CPython中的何处建立?我一生中都找不到对该号码的引用。我从这里看不到它,并且签入仅查找匹配的字符串。 问题答案: 实习发生在代码即编译时。通常,编译时会导致以下字节码: 但是,由于两者都是常量,因此可以在窥视孔优化器

  • 问题内容: 我知道还有其他主题,但似乎无法找到实现方法。 我试图将UITextField限制为仅5个字符 最好是字母数字和-和。和_ 我看过这段代码 和 我只是不知道如何实际实现它,或者我应该换成我的自定义UITextField换成哪个“ textfield” 问题答案: 您的视图控制器应符合,如下所示: } 设置文本字段的委托: 在您的视图控制器中实现该方法: 全部一起: 对于Swift 4 只

  • 问题内容: 如何覆盖此UITextField函数,使其对最大字符数有所限制? 我已经对堆栈进行了一些研究,但是我只能找到此函数(请参见下文)。首先,我看不到如何覆盖,其次,它使用NSRange作为具有UITextRange的参数。如何实现呢?谢谢 我失败的尝试: 错误:无法将类型“ UITextRange”的值转换为预期的参数类型“ NSRange”(又名“ _NSRange”) 问题答案: 您可