java - 在Java中将字符串拆分为等长的子字符串

标签 java regex string split

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

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

类似问题:

Split string into equal-length substrings in Scala

最佳答案

这是正则表达式单行版本:

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

\G 是一个零宽度断言,它匹配上一个匹配结束的位置。如果 没有 之前没有匹配,则匹配输入的开头,与 \A 相同。封闭的lookbehind匹配距离最后一个匹配结束四个字符的位置。

lookbehind 和 \G 都是高级正则表达式功能,并非所有风格都支持。此外,\G 并没有在支持它的风格中一致地实现。这个技巧将在 Java 中起作用(例如) 、Perl、.NET 和 JGSoft,但不在 PHP 中(PCRE)、Ruby 1.9+ 或 TextMate(均为 Oniguruma)。 JavaScript 的 /y(粘滞标志)不如 \G 灵活,即使 JS 确实支持后视,也不能这样使用。

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

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

关于java - 在Java中将字符串拆分为等长的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3760152/

相关文章:

java - 在 Android 中使用 javaagent

python - pandas - 用大写字母替换字符串中的一个字母

python - 如何结合两个正则表达式?

c - C中将字符串截断到一定长度,然后在末尾添加字符

php - 将字符串的其余部分与正则表达式匹配

java - 如何在 apache spark 中加入两个(或更多)流(JavaDStream)

c# - Java中数组继承自什么?我可以这样做吗?

java - 摩托罗拉 Android 2.2 相机忽略 EXTRA_OUTPUT 参数

regex - Elixir 案例中的正则表达式

c# - 转义 C# 字符串中的双引号