2011-09-28 103 views
7

我从Web服务获取格式化的金额。它可以以不同的格式并使用不同的货币,例如从格式化金额提取货币

  • $ 1.10
  • € 1,10
  • 1,10 €
  • EUR 1.10(或许,我不知道我会真正遇到这样的一个)

我想提取货币符号( $),并且如果可能的话,从该符号获得关联的Currency对象(Java)。我不需要提取金额,我可以在其他地方找到。从java.util.Currency

+0

接受的SO回答这里可能会有帮助:http://stackoverflow.com/questions/7116507/arbitrary-currency-string-get-all-parts-separated – Steve

回答

0

getSymbol()方法会帮助你得到的货币符号

1

你可以在Joda Money看看,它可能会提供您问题的解决方案。注意:它仍然是0.6版本

3

您可以使用正则表达式来解析您的web服务的结果。您必须过滤所有字符,数字,点和空格除外。这是正则表达式:

String regexp = "[^0-9\\.,\\s]*"; 

第一组匹配结果是货币符号(或名称,例如EUR)。

这里是我的样本方法:

public void test() throws Exception { 
    String text = "2.02 $"; 
    String regexp = "[^0-9\\.,\\s]*"; 
    Pattern p = Pattern.compile(regexp); 
    Matcher m = p.matcher(text); 
    while (m.find()) { 
     for (int i = 0; i < m.groupCount() + 1; i++) 
      LOG.info(m.group(i)); 
    } 
} 
+0

抛出异常'(而不是'try/catch/System.out.printStackTrace')+1 – michael667