将格式XXX-YY-ZZZZ的字符串替换为此格式XXX / ZZZZ / YY

时间:2019-05-01 16:03:20

标签: java regex

我必须从

更改字符串中数字的格式
XXX-YY-ZZZZ 

更改为格式

XXX/ZZZZ/YY 

其中X,Y和Z分别代表数字0-9

例如方法

changeFormat("Please quote your policy number: 112-39-8552.") 

应返回:

"Please quote your policy number: 112/8552/39." 

“-”可能出现在文本中的其他地方

1 个答案:

答案 0 :(得分:3)

您可以在此正则表达式中使用replaceAll来捕获(\d{3})-(\d{2})-(\d{4})组:

str = str.replaceAll("\\b(\\d{3})-(\\d{2})-(\\d{4})\\b", "$1/$3/$2");
//                       G1          G2       G3          G1 G3 G2

regex demo

正则表达式详细信息

  • \b起始单词边界
  • (\d{3})组以匹配三个数字
  • -文字连字符
  • (\d{2})组以匹配两位数字
  • -文字连字符
  • (\d{4})组以匹配四个数字
  • \b结束词边界

完整示例:

String str = "Please quote your policy number: 112-39-8552.";
str = str.replaceAll("\\b(\\d{3})-(\\d{2})-(\\d{4})\\b", "$1/$3/$2");

System.out.println(str);
//=>Please quote your policy number: 112/8552/39.