字符串格式为特定模式

时间:2018-04-23 17:52:39

标签: java string format

是否有任何非常灵活的方式将String数据格式化为特定模式,例如:

data input -> 0123456789
data output <- 012345/678/9

我是通过将String切割成多个部分来实现的,但我正在寻找更合适的方式。

3 个答案:

答案 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