如何使用一定长度后拆分一个字符串?

我想在一定长度后分割一个字符串。

假设我们有一串“消息”

Who Framed Roger Rabbit 

像这样拆分:

 "Who Framed" " Roger Rab" "bit" 

当“消息”变量超过10时,我想分开。

我目前的拆分代码:

 private void sendMessage(String message){ // some other code .. String dtype = "D"; int length = message.length(); String[] result = message.split("(?>10)"); for (int x=0; x < result.length; x++) { System.out.println(dtype + "-" + length + "-" + result[x]); // this will also display the strd string } // some other code .. } 

我根本不会使用String.split

 String message = "Who Framed Roger Rabbit"; for (int i = 0; i < message.length(); i += 10) { System.out.println(message.substring(i, Math.min(i + 10, message.length())); } 

增加2018/5/8:

如果您只是打印字符串的部分,那么有一个更有效的选项,因为它避免显式创建子字符串:

 PrintWriter w = new PrintWriter(System.out); for (int i = 0; i < message.length(); i += 10) { w.write(message, i, Math.min(i + 10, message.length()); w.write(System.lineSeparator()); } w.flush(); 

我认为Andy的解决方案在这种情况下是最好的,但是如果你想使用正则表达式并且你可以做分裂

 "Who Framed Roger Rabbit ".split("(?<=\\G.{10})"); 

这对你有用。 适用于任何长度的消息。

 public static void main(String[] args) { String message = "Who Framed Roger Rab bit"; if (message.length() > 10) { Pattern p = Pattern.compile(".{10}|.{1,}$"); Matcher m = p.matcher(message); while (m.find()) { System.out.println(m.group()); } } } 

O / P:

 Who Framed Roger Rab bit 

您可以使用正则表达式查找,而不是像这样的拆分: [\w ]{0,10}

 Pattern p = Pattern.compile("[\\w ]{0,10}"); Matcher m = p.matcher("who framed roger rabbit"); while (m.find()) { System.out.println(m.group()); }