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
)