如果字符串是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

    10-05 17:48