如果字符串是a = 000102.45600
。我需要将其转换为a = ---102.45600
。
使用正则表达式或字符串格式化程序对Java有帮助吗?
尝试了以下内容:
a = a.replaceFirst("^0+(?!$)","-");
但我只得到
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
\G
在\A
的第一次迭代中的行为类似于replaceAll()
(字符串的开始锚点),但在后续遍历中,它将锚点匹配项锚定到上一个匹配项结束的位置。这样可以防止它在字符串的其他任何位置(例如小数点后)匹配零。请参阅:参考SO answer。