我想替换字符串中所有出现的组。
String test = "###,##.##0.0########";
System.out.println(test);
test = test.replaceAll("\\.0(#)", "0");
System.out.println(test);
我想要获得的结果是###,##.##0.000000000
基本上,我想替换尾随#
的所有.0
符号。
我找到了this about dynamic replacement,但我无法真正发挥作用。
最佳解决方案不会考虑要替换的哈希数量(如果这样可以消除任何混淆)。
答案 0 :(得分:7)
答案 1 :(得分:5)
您可以使用简单的正则表达式来完成任务。
#(?=#*+$)
(?=#*+$)
=一个肯定的look-ahead,用于检查在字符串#
结尾之前有0个或更多#
符号的任何$
。 修改:我现在使用possessive quantifier *+
来避免任何性能问题。
请参阅demo
String test = "###,##.##0.0###########################################";
test = test.replaceAll("#(?=#*+$)", "0");
System.out.println(test);
答案 2 :(得分:2)
您可以将文本拆分为“0.0”并仅替换第二部分:
String[] splited = "###,##.##0.0########".split("0.0");
String finalString = splited[0] + "0.0" + splited[1].replaceAll("#","0");