我想将String拆分为每行最多字符数的行,而只在空格上拆分。
示例:
如果我的字符串是good morning , today is monday good morning , today is monday
字符数:11
输出应为
good
morning ,
today is
monday good
morning ,
today is
monday
这是我的两行代码
public String skipRowLettreNumbre(String lettre) {
String ret = lettre + "\n";
if (lettre.length() > 36) {
String after50 = lettre.substring(36);
for (int i = 0; i < after50.length(); i++) {
if (after50.substring(i, i + 1).equals(" ")) {
String part1 = lettre.substring(0, i + 36);
String part2 = lettre.substring(i + 36, lettre.length());
ret = part1 + "\n " + part2;
break;
}
}
}
return ret + "";
}
答案 0 :(得分:2)
试试这个:
public String breakLines(String input, int maxWidth) {
StringBuilder sb = new StringBuilder();
int charCount = 0;
for(String word : input.split("\\s")) {
if(charCount > 0) {
if(charCount + word.length() + 1 > maxWidth) {
charCount = 0;
sb.append('\n');
} else {
charCount++;
sb.append(' ');
}
}
charCount += word.length();
sb.append(word);
}
return sb.toString();
}
注意:此方法将使用单个空格(或换行符)替换所有空格字符。
答案 1 :(得分:1)
不确定要实现的目标,但不会str.trim().split(" ")
完成工作吗?
String str = "good morning , today is monday good morning , today is monday ";
String[] arrayStr = str.trim().split(" ");
如果您想要出现次数,只需int a = arrayStr.length -1
修改强> 仍然无法得到你想要的。据我所知,你想用固定的字符数字拆分字符串而不是拆分字(例如scho \ n ol)。如果是这样,您可以查看this question。这不是一件容易的事。
答案 2 :(得分:1)
好的,经过一些谷歌搜索后,我发现了使用rexeg matcher的解决方案:
String text = "good morning , today is monday good morning , today is monday ";
String patternString = "(.{1,11}\\s+)";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(text);
int count = 0;
ArrayList<String> list = new ArrayList<>();
while (matcher.find()) {
count++;
String match = matcher.group().trim();
System.out.println(match);
list.add(match);
}
String[] result = list.toArray(new String[count]);
这基本上搜索 1到11个字符的文本(.{1,11}
),然后是至少一个空格(\\s+
)并打破文字分为这些部分。
请注意输入字符串必须以空格结尾才能生效,因此在使用此字符串时,请在字符串末尾添加额外空格,或更改{{1} } \\s+
(至少一个空格,或字符串的结尾)。
另外,这里是我写的这个教程:
Java rexeg,Java regex quantifiers和Matcher tutorial
输出:
(\\s+|$)
答案 3 :(得分:0)
您的问题似乎很不清楚,但是根据我的想法,您希望根据空格字符拆分字符串。简单: -
String string="good morning , today is monday good morning , today is monday";
String[] arr=string.split(" ");
这里的arr是包含所有字符串的String数组。
答案 4 :(得分:0)
灵感来自kajacx's answer:
public String breakLines(String input, int maxWidth) {
return input.replaceAll("(\\G.{1," + maxWidth + "})(\\s+|$)", "$1\n"));
}