一尘不染

在Java中将字符串拆分为相等长度的子字符串

java

如何"Thequickbrownfoxjumps"在Java 中将字符串拆分为相等大小的子字符串。例如。"Thequickbrownfoxjumps"大小相等的4个应该给出输出。

["Theq","uick","brow","nfox","jump","s"]

阅读 798

收藏
2020-02-28

共1个答案

一尘不染

这是regex一线版:

System.out.println(Arrays.toString(
    "Thequickbrownfoxjumps".split("(?<=\\G.{4})")
));

\G是一个零宽度断言,它与上一个匹配结束的位置匹配。如果是以前没有的比赛,它的输入的开始,同相匹配\A。后面的封闭式匹配从最后一场比赛的末尾开始算起的四个字符的位置。

都是落后的,\G都是高级正则表达式功能,并非所有版本都支持。此外,\G在支持它的所有口味上实现的方式不一致。此技巧将(例如)在Java,Perl,.NET和JGSoft中起作用,但不适用于PHP(PCRE),Ruby 1.9+或TextMate(均为Oniguruma)。JavaScript的/y(sticky标志)不如灵活\G,即使JS确实支持lookbehind,也无法以这种方式使用。

我应该提到,如果你有其他选择,我不一定会推荐此解决方案。其他答案中的非正则表达式解决方案可能会更长,但它们也可以自我记录。这恰恰相反。;)

此外,这在Android中不起作用,它不支持\G在lookbehinds中使用。

2020-02-28