是否使用.replaceAll函数从相反方向将字符串拆分为多个部分?JAVA



假设我在JAVA中有以下字符串:

str = "B49FD7FD96B"

我可以通过以下操作将此字符串更改为B49F D7FD 96B

str = str.replaceAll("....",  "$0 ");

但是如何将字符串更改为这个B49 FD7F D96B

因此,在某种程度上,我实际上需要从相反的方向使用函数.ReplaceAll((。或者这在.ReplaceAll((中是不可能的,我需要使用其他东西吗?如果是这样,最好的方法是什么?

您使用replaceAll有什么原因吗?(看起来你也在使用正则表达式(为什么不简单地使用for循环来获得您想要的输出呢?

如果你想使用你所拥有的,你可以尝试:

str = str.substring(0, 3) + " " + str.substring(3).replaceAll("....",  "$0 ");

如果你想通过使用replaceAll"另一种方式"将它分成4组,剩余部分在开头而不是结尾,你可以反转字符串,执行它,然后再次反转:

str = "B49FD7FD96B";
str = new StringBuilder(str).reverse().toString();
str = str.replaceAll("....",  "$0 ");
str = new StringBuilder(str).reverse().toString();

结果:"B49 FD7F D96B"

这个更长,但不使用正则表达式:

String groupInFours(String s) {
int index = s.length() % 4;
StringBuilder sb = new StringBuilder();
if (index > 0) {
sb.append(s.substring(0, index));
}
for (; index < s.length(); index += 4) {
if (sb.length() > 0) {
sb.append(" ");
}
sb.append(s.substring(index, index+4));
}
return sb.toString();
}

创建StringBuilder,添加任何不是四的倍数的初始字符组,然后为字符串的其余部分添加四个字符组,必要时用空格前缀。

最新更新