如何移除字符串中小数点后全为0的小数位?现有代码运行不生效求助
问题根因
- 核心错误是没有接收
replace()方法的返回值:Java中String属于不可变类,所有对字符串内容做修改的方法,都不会改动原字符串对象,只会返回修改后的新字符串。你仅调用price_normal2.replace(".00","")但没有将返回值赋值给变量,原字符串自然不会发生变化。 - 现有逻辑存在场景漏洞:只判断了
.00的情况,若遇到1234.0、1234.0000这类小数点后0的位数不等于2的场景,就无法满足「小数点后所有位都是0就删除小数部分」的需求。
修复方案
1. 快速适配当前场景(仅处理.00后缀)
只需给原变量赋值replace的返回值即可:
String price_normal2 ="1234.00"; if(price_normal2.contains(".00")){ price_normal2 = price_normal2.replace(".00",""); Log.i("PRICEEEEE",""+price_normal2); }
2. 通用全场景适配(支持任意位数的全0小数部分)
用正则匹配替换,无需提前判断,自动处理所有符合要求的场景:
// 正则含义:匹配小数点后跟着1个及以上0、直到字符串结尾的片段,替换为空 String price_normal2 ="1234.00"; price_normal2 = price_normal2.replaceAll("\\.0+$", ""); Log.i("PRICEEEEE",""+price_normal2);
这种写法下,1234.0、1234.000都会被转换为1234,1234.25、1234.05这类有非0小数位的内容会保持原样。
内容的提问来源于stack exchange,提问作者Areeb Khan
相关产品推荐
相关产品推荐

