Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从格式化金额中提取货币_Java_Parsing_Currency - Fatal编程技术网

Java 从格式化金额中提取货币

Java 从格式化金额中提取货币,java,parsing,currency,Java,Parsing,Currency,我从一个网络服务中得到了一笔格式化的钱。它可以采用不同的格式和使用不同的货币,例如 $1.10 1,10欧元 1,10€ 1.10欧元(也许,我不确定我是否真的会遇到这个) 我想从中提取货币符号($),如果可能的话,从该符号中获取关联的currency对象(Java)。我不需要提取金额,我可以从其他地方获取。getSymbol()方法来自java.util.Currency将帮助您获取货币符号,您可以查看一下,它可能会为您的问题提供解决方案。注意:它仍然是0.6版,您可以使用正则表达式来解析

我从一个网络服务中得到了一笔格式化的钱。它可以采用不同的格式和使用不同的货币,例如

  • $1.10
  • 1,10欧元
  • 1,10€
  • 1.10欧元
    (也许,我不确定我是否真的会遇到这个)

我想从中提取货币符号(
$
),如果可能的话,从该符号中获取关联的
currency
对象(Java)。我不需要提取金额,我可以从其他地方获取。

getSymbol()
方法来自
java.util.Currency
将帮助您获取货币符号,您可以查看一下,它可能会为您的问题提供解决方案。注意:它仍然是0.6版,您可以使用正则表达式来解析来自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));
    }
}
public void test()引发异常{
字符串text=“2.02$”;
字符串regexp=“[^0-9\\,\\s]*”;
Pattern p=Pattern.compile(regexp);
匹配器m=p.Matcher(文本);
while(m.find()){
对于(int i=0;i
此处接受的SO答案可能有帮助:+1 for
引发异常
(而不是
try/catch/System.out.printStackTrace