如何使用一定长度后拆分一个字符串?
我想在一定长度后分割一个字符串。
假设我们有一串“消息”
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()); }
- Android – 自动启动应用并限制对其他应用的访问权限
- float和double的不同值
- Android OnLongClickListener未在MapView上触发
- 我如何在Android中实现片段的通用ArrayList?
- UnsatisfiedLInkError Eclipse JNI(从命令行工作但不在Eclipse中工作)包名称
- 编译时出错:Android Studio
- Google Play服务版本9.0.83的路线跟踪活动中地图上未显示任何标记
- 了解Android紧密循环/旋转暂停错误
- 有关j_security_check,j_username和j_password的Servlet安全性问题