NumberFormat 从值中删除逗号 ( , )?

Posted

技术标签:

【中文标题】NumberFormat 从值中删除逗号 ( , )?【英文标题】:NumberFormat removing comma ( , ) from value? 【发布时间】:2018-08-31 22:21:18 【问题描述】:

我有一个从字符串值中删除小数位的小疯狂方法。

private double getDoubleFromString(final String value) throws ParseException 
    NumberFormat format = NumberFormat.getInstance(Locale.getDefault());
    Number number = format.parse(value);
    return number.doubleValue();

如果本地语言是'en',它会产生不带逗号的值(,)逗号。

例如:

xx,x 
result is xxx.
74,5 --> 745 (problem facing in this format)
74.5 --> 74.5 (working fine it string has dot)

我确实需要分隔符是一个点或一个点和一个逗号以及值字符串。有人知道如何完成这个小壮举吗?

【问题讨论】:

您是否尝试过使用替换并替换所有“,”和“。”用“”? 在处理字符串之前将所有逗号替换为点。或者使用自定义语言环境,而不是Locale.getDefault(),因为语言环境是定义小数点分隔符的那个 @Antonio 我尝试将 , 替换为 .在 NumberFomat 之前它仍然无法正常工作。 @VladyslavMatviienko 我必须支持数字格式的本地化。如果值是 74.5,它应该是所有语言的 74.5 / 74,5。这是一个值,而不是一个更独立的值。 【参考方案1】:

试试这个

private double getDoubleFromString(final String value) throws ParseException 
      String newvalue= value.replace(",",".");
        NumberFormat format = NumberFormat.getInstance(Locale.getDefault());
        Number number = format.parse(newvalue);
        return number.doubleValue();
    

示例代码

try 
            Log.e("RESULT_DATA",getDoubleFromString("88,5")+"");
            Log.e("RESULT_DATA",getDoubleFromString("79.5")+"");
         catch (ParseException e) 
            e.printStackTrace();

输出

03-22 18:37:09.173 7103-7103/? E/RESULT_DATA: 88.5
03-22 18:37:09.174 7103-7103/? E/RESULT_DATA: 79.5

【讨论】:

@RajaReddyPolamReddy 你能解释更多吗,因为它在我测试过的设备上运行良好,而不是作为 ans 发布 在您的设备中将您的本地语言更改为法国并检查。 @RajaReddyPolamReddy 你看过这条评论了吗***.com/questions/49429347/… 我的意图是应用程序应该支持所有国家/地区而不会失败。就像如果值是 74.5 它在所有语言中应该是 74.5 / 74,5。这是一个值,而不是一个更独立的值。

以上是关于NumberFormat 从值中删除逗号 ( , )?的主要内容,如果未能解决你的问题,请参考以下文章

从值中包含逗号的 JSON 中提取键值对

JS从值中获取键[重复]

检测是不是从值中选择了特定选项[重复]

从值中检索一系列数据 Berkeley DB

[JS]从值中查找键

从值中减去百分比