假设“时间戳”组件的长度始终为 6 个字符并且始终位于字符串的开头,则此解决方案应该可以正常工作。
String test = "012345 test test test";
test = test.substring(0, 2) + ":" + test.substring(2, 4) + ":" + test.substring(4, test.length());
这会输出01:23:45 test test test
为什么?因为您正在临时创建一个 String 对象,它有两个字符长,然后在取下一对之前插入冒号。最后,附加String 的其余部分并将其分配给您想要的任何String 变量。请记住,substring 方法不会修改您正在调用该方法的 String 对象。此方法返回一个“新”String 对象。因此,变量test 是未修改的,直到最后执行赋值操作。
或者,您可以使用 StringBuilder 并像这样附加每个组件:
StringBuilder sbuff = new StringBuilder();
sbuff.append(test.substring(0,2));
sbuff.append(":");
sbuff.append(test.substring(2,4));
sbuff.append(":");
sbuff.append(test.substring(4,test.length()));
test = sbuff.toString();
您也可以使用“花式”循环来执行此操作,但我认为对于这么简单的事情,循环只是矫枉过正。哦,我差点忘了,这应该适用于你的两个测试字符串,因为在最后一个冒号插入之后,代码会不加选择地从索引位置 4 一直到字符串末尾。