我正在尝试使用最大允许字符的最后一个空格来分割字符串:
期望:
字符串名称=“约翰·大卫·库塔·马克·亨利·安东尼·萨姆”;
允许的最大字符数:30
所以它应该返回为:
John David Guetta MarkHenry
Anthoney Sam
实际结果:
John David Guetta MarkHenry An
thoney Sam
代码:
public static List<String> splitByLength(String str, int n) {
List<String> returnList = new ArrayList<>();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
if (i > 0 && (i % n == 0)) {
returnList.add(sb.toString());
sb = new StringBuilder();
}
sb.append(str.charAt(i));
}
if (StringUtils.isNoneBlank(sb.toString())) {
returnList.add(sb.toString());
}
return returnList;
}
最佳答案
您可以使用最多接受 30 个字符的正则表达式:
String name = "John David Guetta MarkHenry Anthoney Sam";
Pattern p = Pattern.compile(".{1,30}(\\s+|$)");
Matcher m = p.matcher(name);
while(m.find()) {
System.out.println(m.group().trim());
}
请注意 (\\s|$)
在空格处或到达初始字符串末尾时中断。
关于java - 使用最大字符数的最后一个空格分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46768101/