Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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_Regex_String_Numbers - Fatal编程技术网

使用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
,是否有用于此的正则表达式?