提问人:Nick Slack 提问时间:3/8/2023 更新时间:3/8/2023 访问量:30
如何在一定字符限制后在最近的空格后剪掉一行?[复制]
How to have a line cut off after the nearest space after a certain character limit? [duplicate]
问:
我希望每行在 20 个字符过后拆分,但我希望它在最近的空格处拆分,这样句子只有整个单词。
这是我拥有的代码:
//I have imported the scanner util above this.
System.out.println("Please input a word: ");
Scanner stringScanner = new Scanner(System.in);
String input = stringScanner.nextLine();
int numberOfCharacters = 20;
for (int i = 0; i < input.length(); i += numberOfCharacters) {
String part = input.substring(i, Math.min(input.length(), i + numberOfCharacters));
System.out.println(part);
}
}
}
这是我得到的输出:
Please input a sentence:
hello there, I am doing some coding!
hello there, I am do
ing some coding!
这就是我想要的:
Please input a sentence:
hello there, I am doing some coding!
hello there, I am
doing some coding!
我不确定如何让它工作。谢谢你的任何安宁。
答:
0赞
MarsAtomic
3/8/2023
#1
看起来你会从一些方向中受益更多,而不是一个固定的解决方案,因为你还在学习,所以我只给你一些结构和一些工具,希望你能自己制定出实际的代码。
您可以使用该方法循环访问 String 的字符。.charAt()
for(int pos = 0; pos < someString.length(); pos ++)
{
System.out.println(someString.charAt(pos));
}
但是,简单地说,您的要求是在 20 个字符或之前找到第一个空格字符。
那么,如果你决定倒数呢?从位置 20 开始(实际上是第 21 个字符,因为我们处理的是以 0 开头的索引)。
for(int pos = numberOfCharacters; pos >= 0; pos --)
{
if(someString.charAt(pos) == ' ')
{
// get the substring from 0 to pos for one line
// get the substring from pos + 1 to end of line for the next
}
}
如果这是一个空格,您就知道可以在那里对输入字符串进行子字符串。如果不是,请向后移动一个字符,看看它是否是一个空格,依此类推。这种“中断”的唯一方式是,如果有人输入了一个包含两个或更多连续空格的短字符串,但我不能告诉你如何处理,因为这是你必须自己做出的设计决定。
如果你想变得花哨,你也可以将这个函数实现为一个自然适合这个函数的递归,但这是另一个问题。
下一个:g 无法解析为变量
评论