是否有任何非常灵活的方式将String数据格式化为特定模式,例如:
data input -> 0123456789
data output <- 012345/678/9
我是通过将String切割成多个部分来实现的,但我正在寻找更合适的方式。
答案 0 :(得分:1)
您可以将replaceAll与regex一起使用以匹配多个组,如下所示:
String text = "0123456789";
text = text.replaceAll("(\\d{6})(\\d{3})(.*)", "$1/$2/$3");
System.out.println(text);
<强>输出强>
012345/678/9
细节
(\d{6})
第一组匹配6位数(\d{3})
第二组匹配3位数字(.*)
将您的字符串中的其余三个分组$1/$2/$3
替换为第1组,然后是/
,后跟第2组,然后是/
,后跟第3组答案 1 :(得分:1)
假设你想要小组中的最后一个和第四个 - 第二个最后一个:
String formatted = str.replaceAll("(...)(.)$", "/$1/$2");
这会在组中捕获您想要的部分,并用插入的斜线替换它们。
答案 2 :(得分:0)
您可以使用StringBuilder
的{{3}}在特定索引处插入字符:
String input = "0123456789";
String output = new StringBuilder(input)
.insert(6, "/")
.insert(10, "/")
.toString();
System.out.println(output); // 012345/678/9