用于分析字符串和提取数字的Java库

时间:2014-06-23 10:25:50

标签: java regex

我知道标题很模糊,但我会解释我在寻找什么 我必须分析来自各种来源的大量数据,并且我想检查一个值是否可以被解释为数值。我知道有正则表达式,但事实是,我有很多格式以各种方式格式化,具体取决于它们来自何处:

  • 英文译文:123,456.123
  • 法国号码:123 456,123
  • 西班牙语号码:123.456,123
  • 瑞士号码:123'456.123

我正在寻找能够分析这些String并返回数值或相应模式的库。这会节省我很多时间!

感谢的

3 个答案:

答案 0 :(得分:4)

由于无法判断字符串"123,456"123.456的法语符号(一百二十三点四,五,六)还是{{1}的英语符号1}}(十二万三千四百五十六),没有可靠的方法来做你所要求的。

答案 1 :(得分:1)

使用一组正则表达式来执行此操作。例如,对于英文数字,​​您可以使用以下内容:

(([0-9]+),[0-9]+){1,}((\.)[0-9]+)?    

这会找到像

这样的数字
  • 232,23,34.4
  • 34,3,43

但不是:

  • 343
  • 343.343

我希望这有帮助。

答案 2 :(得分:1)

我认为以下方法将满足您的需求:

   public Double getNumber( String str ) {
    str = str.replace("'", "").replace(",","").replace(" ","").trim();

    try {
        Double num = Double.parseDouble(str);
        return num;
    } catch( NumberFormatException nfe ) {
        nfe.printStackTrace();
        return 0.0;
    }
}