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个破折号.
规则:字符串中十进制前的任何前导零都应该被那么多破折号替换.
000023.45677 至 ----23.45677
002345.56776 至 --2345.56776
00000.45678 至 -----.45678
希望我清楚我的需求是什么?
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 回答.