如何仅将字符串中值为整数的double转换为int类型?
把字符串中的整数型Double转为Int的实现方案
刚好之前处理过类似的表达式格式化需求,用正则替换就能完美解决你的问题。核心就是精准匹配那些以.0结尾的数值,把它们简化成整数形式,同时保留非整数的浮点数(比如2.1)。
直接可用的Java代码示例
public class NumericFormatter { public static void main(String[] args) { String original = "3.0^3x+x-2.1+9.0"; // 正则匹配并替换:捕获数字部分,去掉后面的.0 String formatted = original.replaceAll("(\\d+)\\.0", "$1"); System.out.println(formatted); // 输出结果:3^3x+x-2.1+9 } }
正则表达式说明
(\\d+):捕获一个或多个数字(这就是我们要保留的整数部分),用括号标记为捕获组$1\\.0:匹配字面量的.0部分- 整个正则会找到所有类似
3.0、9.0这样的子串,然后替换成捕获到的数字部分,也就是3、9
边界情况补充
如果你的字符串里可能出现单独的.0(比如没有前置数字的情况),可以把正则调整为(?<!\\d)(\\d+)\\.0(?!\\d),这样只会匹配前后都不是数字的X.0,避免误替换其他场景的内容。不过从你的示例来看,基础版本的正则已经完全够用啦。
内容的提问来源于stack exchange,提问作者J.Doe




