如何将字符串与int转换为字符串与双?
我正在构建一个计算器,让计算器工作,我需要将所有int数字转换为我的字符串中的两个数字。例如,如果我有这个字符串:3 * 8 + 5/2-4,我想将他转换为:3.0 * 8.0 + 5.0/2.0-4.0。 我该怎么做?如何将字符串与int转换为字符串与双?
编辑:如果我有这样的字符串:3.0 * 8.0 + 5.0/2.0-4,我想他转换为:3.0 * 8.0 + 5.0/2.0〜4.0
您可以使用String#replaceAll通过替换字符串的正则表达式例如:
String regex = "(?<=^|[+/(*)-])(\\d+)(?=[+/(*)-]|$)";
// $1 references to the first captured group ---v
String result1 = "3*8+5/2-4".replaceAll(regex, "$1.0");
// ^--- "3.0*8.0+5.0/2.0-4.0"
String result2 = "3.0*8+5/2-4.0".replaceAll(regex, "$1.0");
// ^--- "3.0*8.0+5.0/2.0-4.0"
String result3 = "3.0*(8+5)/(2-4.0)".replaceAll(regex, "$1.0");
// ^--- "3.0*(8.0+5.0)/(2.0-4.0)"
如果已经存在双号 –
@AlexandrLihonosov,OP说“int”为“double”,那么你的解决方案将不起作用。你有没有看到OP的问题? –
是的,这只是我的假设,也可能是这样的:3 * 8 + 5/2-4 + 3.5为什么不呢? –
解析时只需使用Double#parseDouble。 –
如果字符串中已经有一个双精度型,例如3.4564646,该怎么办?是否应舍入到小数点后一位? –
@JacobG。,他不能将他的字符串解析为double,因为它包含数学运算符,如+,/, - 等 –