Tri*_*ian 3 java regex string split
我有一个字符串,如果可能的话我必须分成相等长度的子串.我发现这个解决方案只有在字符串长度为4的倍数时才有效.
String myString = "abcdefghijklm";
String[] split = myString.split("(?<=\\G....)");
Run Code Online (Sandbox Code Playgroud)
这将产生:
[abcd, efgh, ijkl, m]
Run Code Online (Sandbox Code Playgroud)
我需要的是从"字符串的末尾"拆分.我想要的输出应该是这样的:
[a, bcde, fghi, jklm]
Run Code Online (Sandbox Code Playgroud)
我如何实现这一目标?
这应该这样做:
String[] split = myString.split("(?=(....)+$)");
// or
String[] split = myString.split("(?=(.{4})+$)");
Run Code Online (Sandbox Code Playgroud)
它的作用是:只有当空字符串前面有4个字符的倍数,直到达到输入结束时才分割空字符串.
当然,这有一个糟糕的运行时间(O(n ^ 2)).您可以通过简单地自行分割来获得线性运行时算法.
如@anubhava所述:
(?!^)(?=(?:.{4})+$)如果字符串长度是4的倍数,则避免空结果
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |