正则表达式格式化有效大十进制值中的字符串

时间:2015-02-26 16:56:30

标签: java regex

亲爱的朋友们我正在阅读包含某些文件的csv文件,例如 1.086,12 。现在我的问题是我必须格式化它允许我创建一个BigDecimal,他们我的正确值应该是1086.12。但我也可能有另一个值99,11,在这种情况下我必须得到99.11。

我写了这段代码:

BigDecimal bigDecimal = null;
String str = value.replace(',','.');
bigDecimal = new BigDecimal(str);

我的代码只适用于后者,是否有一些正则表达式允许这个?

2 个答案:

答案 0 :(得分:1)

您不需要正则表达式。您可以/应该使用DecimalFormat

    DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.GERMAN);
    DecimalFormat df= new DecimalFormat();
    df.setDecimalFormatSymbols(dfs);
    Double valCEWithUKFormat = df.parse(str).doubleValue();

答案 1 :(得分:0)

您可以使用此Java代码:

String[] arr = {"1.086,12", "99.11"};
for (String tok: arr) {
    if (tok.matches("[^.]*\\.[^,]+,.*"))
        tok= tok.replace(".", "").replace(",", ".");
    System.out.println( tok );
}

<强>输出:

1086.12
99.11