我需要将一些字符串转换为double。
这些字符串来自第三方服务,可能会更改格式。
我需要创建一个接受字符串并返回double的函数。
字符串可以是:
我尝试的是:
function double convert(String s){
s = s.replace(".","").replace(",",".");
return Double.parseDouble(s);
}
这并未涵盖所有情况。
可以请别人帮帮我吗?
谢谢!
答案 0 :(得分:4)
以下方法怎么样?它会将所有,
替换为.
并删除除最后.
之外的所有内容:
public double convert(String s){
s = s.replace(",",".").replaceAll("\\.(?=.*\\.)","");
return Double.parseDouble(s);
}
答案 1 :(得分:2)
使用java NumberFormat class:
import java.text.NumberFormat;
import java.text.ParseException;
public class Solution {
public static void main(String[] args) throws ParseException{
String num = "80,00.34";
NumberFormat form = NumberFormat.getInstance();
System.out.println(form.parse(num).doubleValue());
}
}
这适用于除#6之外的所有情况,我认为这种情况不是任何有效的数学格式。
您还可以根据您的区域设置获取NumberFormat实例:
NumberFormat form = NumberFormat.getInstance(Locale.UK);
答案 2 :(得分:1)
找到'的最后一个索引,'和'。'并替换所有','和'。'到那时为止''。
然后替换'的最后一个索引,'或'。'用'。'
Double.parseDouble()
最后一个字符串。
答案 3 :(得分:0)
DecimalFormat在进入/来自任何格式
时非常有用