用破折号将前导零替换为小数点

Roh*_*her 3 java regex formatting

如果是一个字符串a = 000102.45600.我需要将其转换为a = ---102.45600.使用正则表达式或String格式化程序的java中的任何帮助?

尝试以下方法:

a = a.replaceFirst("^0+(?!$)","-");
Run Code Online (Sandbox Code Playgroud)

但我只a = -102.45600得到3个破折号.

规则:字符串中十进制前的任何前导零都应该被那么多破折号替换.

  1. 000023.45677----23.45677

  2. 002345.56776--2345.56776

  3. 00000.45678-----.45678

希望我清楚我的需求是什么?

Was*_*mad 5

String subjectString = "000102.45600";
String resultString = subjectString.replaceAll("\\G0", "-");
System.out.println(resultString); // prints ---102.45600
Run Code Online (Sandbox Code Playgroud)

\G\A在第一次迭代时起作用(字符串开始锚点)replaceAll(),但在后续传递中,它将匹配锚定到上一个匹配结束的点.这可以防止它在字符串中的任何其他位置匹配零,如小数点后.

参见:参考SO 回答.