提问者:小点点

Java-每n个字符添加一个新行,而不拆分单词


所以我一直在尝试让用户输入的字符串每n个字符有一个换行符。我发现的基本上是我写的,我对Java很陌生(Python有一个函数。填充,但我不能在Java中解决这个问题),似乎不能让我的字符串不分开单词。我将程序设置为每10个字符“\n”,但它会在中间打断一些单词…我希望它接受这个单词,并将其移动到下一行,如果它不符合10个字符的限制。

import java.util.Scanner;

public class Wrap {
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        System.out.println("Enter your text: ");
        String newString = scan.nextLine();
        newString = newString.replaceAll(".{10}",  "$0\n");
        System.out.println(newString);

/**第二种方法,仍然切断了单词…

    StringBuilder builtString = new StringBuilder();
        int i = 0;
        while ((i= builtString.indexOf(newString, i + 10)) != -1) {
            builtString.replace(i, i+1, "\n");
        
        }
        System.out.println(builtString);
        */
    
        System.out.println(newString);
    }
}

单词被分开了:(

输出:

This is a 
test and i
t doesnt s
eem to be 
working pr
operly.

Python我得到了我想要的输出,但是Java似乎没有像Python那样“简单”的textwrap功能,或者至少我还没有弄清楚


共1个答案

匿名用户

public static void main(String[] args) {
    String text = "This is a test and it doesnt seem to be working properly.";
    String[] works = text.split(" "); // get list of works
    StringBuilder line = new StringBuilder();
    StringBuilder result = new StringBuilder();
    for (String work : works) {
        if (line.length() + work.length() > 10) { //add line to result if it full
            result.append(line).append("\n");
            line = new StringBuilder(); //reset line is empty
        }
        line.append(work).append(" ");
    }
    result.append(line);
    System.out.println(result.toString());
}