每隔4个字符拆分一个字符串?

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)

我如何实现这一目标?

Bar*_*ers 6

这应该这样做:

String[] split = myString.split("(?=(....)+$)");
// or
String[] split = myString.split("(?=(.{4})+$)");
Run Code Online (Sandbox Code Playgroud)

它的作用是:只有当空字符串前面有4个字符的倍数,直到达到输入结束时才分割空字符串.

当然,这有一个糟糕的运行时间(O(n ^ 2)).您可以通过简单地自行分割来获得线性运行时算法.

如@anubhava所述:

(?!^)(?=(?:.{4})+$) 如果字符串长度是4的倍数,则避免空结果