java - Java - 每n个字符添加一个新行而不拆分单词
问题描述
所以我一直试图让用户输入的字符串每 n 个字符有一个换行符。我发现基本上是我写的,我对 Java 很陌生(Python 有一个 .fill 的函数,但我无法在 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 函数,或者至少我还没有弄清楚。 期望的输出
解决方案
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());
}
推荐阅读
- python - 使用智能卡证书和公钥的网站认证
- visual-c++ - 使用 clang-cl 在 Visual Studio 2019 中使用 Openmp 4/5
- sql - 检查 GROUP BY 中的条件?
- android - (CORDOVA)应用程序未在发布模式下连接到套接字 api
- java - E/RecyclerView:没有附加适配器;使用 searchview 时跳过布局
- javascript - 提示输入密码然后重定向
- mysql - SSH Mysql查询结果
- rxjs - Observable_1.Observable.throw 不是 adal-angular8 的函数
- angular - 角度扩展一个类来改变输入
- python - 尝试将列表附加到 csv 时出错