使用Java货币仅从文本中获取数字
我想从带有货币的字符串中获取数字。 例如:使用Java货币仅从文本中获取数字,java,regex,string,numbers,Java,Regex,String,Numbers,我想从带有货币的字符串中获取数字。 例如: String text = "player number 8 have a nice day. the price is 1 000 $ or you have to pay 2000$."; 所以我想要的输出是: 1000,2000 我用这个: String tmp = text.replaceAll("[^0-9]+", " "); List<String> digitsList = Arrays.asList(tmp.trim()
String text = "player number 8 have a nice day. the price is 1 000 $ or you have to pay 2000$.";
所以我想要的输出是:
1000,2000
我用这个:
String tmp = text.replaceAll("[^0-9]+", " ");
List<String> digitsList = Arrays.asList(tmp.trim().split(" "));
如果数字是这样写的,从文本中得到数字有什么想法吗:1 000,3万
有没有办法只使用货币来获取数字 您可以将这个正则表达式
([0-9]+\s?)\$
与这样的模式一起使用,这意味着一个或多个degit后面可以跟一个空格,所有这些都以curency符号$
结尾:
String text = "player number 8 have a nice day. the price is 1 000 $ or you have to pay 2000$.";
String regex = "(([0-9]+\\s?)+)\\$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
结果
1 000
2000
编辑
1000
5000
200000
300000
当我有两种货币时,我必须用正则表达式写什么?1000美元和 1000欧元 在这种情况下,您可以使用这个正则表达式代替
([0-9]+\s?)+(\$\124; EUR)
,它可以同时匹配$
符号和EUR
String regex = "(([0-9]+\\s?)+)(\\$|EUR)";
Edit2 我测试了这个,发现了另一个陷阱。当我有2000,00美元和1 000,00欧元我得到00,00。所以我要添加到正则表达式中的内容 20001000 最后一个例子:我有:1000美元和5000欧元,还有2000美元和5000欧元 3000,00欧元,产量应为:1000500020003000 这个 在这种情况下,您可以使用这个正则表达式
([0-9]+[\s,]*)+(\$\124; EUR)
,它可以在数字之间留出空格和逗号,然后当您得到结果时,您可以将所有非degit替换为空,如下所示:
String text = "1000$ and 5 000 EUR and 2 000 , 00 $ and 3000,00 EUR";
//1000,5000,2000,3000
String regex = "(([0-9]+[\\s,]*)+)(\\$|EUR)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group(1).replaceAll("[^0-9]", ""));
// ^^^^^^--------to get only the degits
}
输出
1000
5000
200000
300000
您可以将此正则表达式
([0-9]+\s?+)\$
与这样的模式一起使用,这意味着一个或多个degit后面可以跟一个空格,所有这些都以curency符号结尾$
:
String text = "player number 8 have a nice day. the price is 1 000 $ or you have to pay 2000$.";
String regex = "(([0-9]+\\s?)+)\\$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
结果
1 000
2000
编辑
1000
5000
200000
300000
当我有两种货币时,我必须用正则表达式写什么?1000美元和 1000欧元 在这种情况下,您可以使用这个正则表达式代替
([0-9]+\s?)+(\$\124; EUR)
,它可以同时匹配$
符号和EUR
String regex = "(([0-9]+\\s?)+)(\\$|EUR)";
Edit2 我测试了这个,发现了另一个陷阱。当我有2000,00美元和1 000,00欧元我得到00,00。所以我要添加到正则表达式中的内容 20001000 最后一个例子:我有:1000美元和5000欧元,还有2000美元和5000欧元 3000,00欧元,产量应为:1000500020003000 这个 在这种情况下,您可以使用这个正则表达式
([0-9]+[\s,]*)+(\$\124; EUR)
,它可以在数字之间留出空格和逗号,然后当您得到结果时,您可以将所有非degit替换为空,如下所示:
String text = "1000$ and 5 000 EUR and 2 000 , 00 $ and 3000,00 EUR";
//1000,5000,2000,3000
String regex = "(([0-9]+[\\s,]*)+)(\\$|EUR)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group(1).replaceAll("[^0-9]", ""));
// ^^^^^^--------to get only the degits
}
输出
1000
5000
200000
300000
您能更具体地回答您的问题吗?我们这里没有“给我一个密码”,你能更具体地回答你的问题吗?我们在这里不做“给我代码”。你的回归:)当我有两种货币时,我必须用正则表达式写什么
1000美元和1000EUR
?@Alcwak在这种情况下,您必须使用此正则表达式([0-9]+\\s?)+(\\$\124; EUR)
希望这能帮助您:)谢谢。我测试了这个,发现了另一个陷阱。当我有2000,00美元和1000,00欧元时,我得到00,00
。所以我必须添加到正则表达式中,给我提供20001000
?最后一个例子:我有:1000美元和5000欧元,2000美元和3000,00欧元
,输出应该是:1000500020003000
,有任何正则表达式吗?你的回归:)当我有两种货币时,我必须用正则表达式写什么1000美元和1000EUR
?@Alcwak在这种情况下,您必须使用此正则表达式([0-9]+\\s?)+(\\$\124; EUR)
希望这能帮助您:)谢谢。我测试了这个,发现了另一个陷阱。当我有2000,00美元和1000,00欧元时,我得到00,00
。因此,我必须向正则表达式中添加的内容将为我提供20001000
?最后一个示例:我有:1000美元和5000欧元以及2000,00美元和3000,00欧元
,并且输出应该是:1000500020003000
,是否有用于此的正则表达式?