假设我在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,添加任何不是四的倍数的初始字符组,然后为字符串的其余部分添加四个字符组,必要时用空格前缀。