gpt4 book ai didi

java - 仅使用货币 Java 从文本中获取数字

转载 作者:行者123 更新时间:2023-11-29 08:34:28 26 4
gpt4 key购买 nike

我想从具有货币的字符串中获取数字。例如:

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(" "));

但我的输出是:

8,000,2000

如果数字是这样写的,是否可以从文本中获取数字:1 000、30 000。

还有什么方法可以只用货币获取数字?

最佳答案

您可以将此正则表达式 (([0-9]+\s?)+)\$ 与这样的模式一起使用,这意味着一个或多个数字后面可以跟一个空格和所有以货币符号 $ 结尾:

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

regex demo


编辑

What i have to write in regex when i have two currency? 1000$ and 1000EUR

在这种情况下,您可以使用此正则表达式代替 (([0-9]+\s?)+)(\$|EUR) 它可以同时匹配 $ 签署和 EUR

String regex = "(([0-9]+\\s?)+)(\\$|EUR)";

regex demo 2


编辑2

I tested this and i find another trap. When i have 2000,00 $ and 1 000,00 EUR i get 00,00. So what i have to add to regex that give me 2000,1000?

So final example: I have : 1000$ and 5 000 EUR and 2 000 , 00 $ and 3000,00 EUR And output should be: 1000,5000,2000,3000, any regex for this?

在这种情况下,您可以使用此正则表达式 (([0-9]+[\s,]*)+)(\$|EUR),它允许数字之间有空格和逗号,然后当你得到结果时,你可以用这样的空替换所有非数字:

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

regex demo 3

关于java - 仅使用货币 Java 从文本中获取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45404047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com