java - 如何将格式化字符串转换为 float ?

标签 java number-formatting string-conversion

我有一个字符串列表,如果模式匹配,我想将它们转换为 float 。

以下是一些值和预期结果:

1000         -> 1000.0
1.000        -> 1000.0
1.000,000    -> 1000.0
-1.000,000   -> -1000.0
9,132        -> 9.132
1,000.00     -> invalid
30.10.2010   -> invalid
1,000.000,00 -> invalid

我尝试使用此代码来检查数字是否有效,但模式从未匹配:

Pattern pattern = Pattern.compile("#.###,###");
for(String s : list){
    Matcher m = pattern.matcher(s); 
    if(m.matches()){
         //convert
    }
}

除此之外,我还尝试使用此代码:

 DecimalFormat df = (DecimalFormat) NumberFormat.getCurrencyInstance();
 for(String s : list){
        try {
            Number num = df.parse(s);
            //..
        } catch (ParseException e) {

        } 
    }

此代码的问题是,没有执行基于模式的验证。例如。像 2012/05/30 这样的日期会转换为 2012

那么我如何定义一个有效的模式或配置 DecimalFormat 以满足我的需要?

最佳答案

Pattern 类使用正则表达式。您可能想要这个:

Pattern pattern = Pattern.compile("-?\d\.\d{1,3}(,\d{1,3})?");

您可能需要根据您想要或不想要匹配的格式来调整此正则表达式。

关于java - 如何将格式化字符串转换为 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10906522/

相关文章:

Java:如何发布此 XML 请求?

java - 如何从 xlsm 加密文件中读取?

Java代码 "NumberFormat nf = NumberFormat.getInstance();"

javascript - 始终显示 3 位数字和描述符

objective-c - 如何在 obj-c 中打印格式化的 float ?

c - WinPE环境下C/C中的变体字符串转换

java - 如何对帖子主体对象使用@SerializedName注释

java - 解析时不四舍五入正常吗?数字格式

java - 将 float[] 格式化为字符串 小数点符号更改为逗号

arrays - swift 3 : How can I get the Array from the String