将字符串转换为double的最佳方法

时间:2014-09-17 20:00:12

标签: java double

我需要将一些字符串转换为double。

这些字符串来自第三方服务,可能会更改格式。

我需要创建一个接受字符串并返回double的函数。

字符串可以是:

  1. “80.00”
  2. “80.50”
  3. “80,50”
  4. “80,00”
  5. “80”
  6. “1.500.50”
  7. “1500.50”
  8. “1500,00” 等...
  9. 我尝试的是:

    function double convert(String s){
        s = s.replace(".","").replace(",",".");
        return Double.parseDouble(s);
    }
    

    这并未涵盖所有情况。

    可以请别人帮帮我吗?

    谢谢!

4 个答案:

答案 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在进入/来自任何格式

时非常有用