繁体   English   中英

货币值字符串用逗号分隔

Currency values string split by comma

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个字符串,其中包含格式化的货币值(如45,890.00和多个逗号分隔的值(如45,890.00,12,345.00,23,765.34,56,908.50 ..)。

我想提取并处理所有货币值,但无法为此找到正确的正则表达式,这是我尝试过的

public static void main(String[] args) {
    String currencyValues = "45,890.00,12,345.00,23,765.34,56,908.50";
    String regEx = "\\.[0-9]{2}[,]";
    String[] results = currencyValues.split(regEx);
    //System.out.println(Arrays.toString(results));
    for(String res : results) {
        System.out.println(res);
    }
}

输出为:

45,890 //removing the decimals as the reg ex is exclusive
12,345
23,765
56,908.50

有人可以帮我这个吗?

3 个回复

您需要一个正则表达式“向后看” (?<=regex) ,该(?<=regex)匹配但消耗:

String regEx = "(?<=\\.[0-9]{2}),";

这是您现在可以使用的测试用例:

public static void main(String[] args) {
    String currencyValues = "45,890.00,12,345.00,23,765.34,56,908.50";
    String regEx = "(?<=\\.[0-9]{2}),"; // Using the regex with the look-behind
    String[] results = currencyValues.split(regEx);
    for (String res : results) {
        System.out.println(res);
    }
}

输出:

45,890.00
12,345.00
23,765.34
56,908.50

您还可以使用其他正则表达式来匹配您要搜索的模式(那么,分隔符是什么并不重要):

 String currencyValues = "45,890.00,12,345.00,23,765.34,56,908.50,55.00,345,432.00";
 Pattern pattern = Pattern.compile("(\\d{1,3},)?\\d{1,3}\\.\\d{2}");
 Matcher m = pattern.matcher(currencyValues);
 while (m.find()) {
    System.out.println(m.group());
 }

版画

45,890.00
12,345.00
23,765.34
56,908.50
55.00
345,432.00

正则表达式的解释:

  • \\\\d匹配一个数字
  • \\\\d{1,3}匹配1-3位数字
  • (\\\\d{1,3},)? (可选)匹配1-3位数字,后跟一个逗号。
  • \\\\. 匹配一个点
  • \\\\d{2}匹配2位数字。

但是,我还要说,用逗号作为分隔符可能不是最好的设计,并且可能会导致混乱。

编辑:

正如@tobias_k指出的: \\\\d{1,3}(,\\\\d{3})*\\\\.\\\\d{2}会是更好的正则表达式,因为它可以正确匹配:

  • 1,000,000,000.00

并且不会错误地匹配:

  • 1,00.00

在上述所有解决方案中,请注意字符串中的所有值都是带逗号的十进制值。 如果货币值字符串如下所示,该怎么办:

字符串str =“ 1,123.67aed,34,234.000usd,1234euro”;

在这里,并非所有值都是小数。 应该有一种方法可以确定货币是十进制还是整数。

1 在JavaScript中按逗号分隔的字符串分割值

这是我的问题: 我有RadListBox,我试图获取值并将其附加,这样结果将显示为:“ 1,2,3,4”,但我回来了:1,2,3,4,有人吗知道我该怎么做到吗? 问题从这里开始: 结果:sbLocationsIDS = 1,2,3,4,而不是'1,2,3,4' 其余代码 ...

2 在Java,int和String中拆分逗号分隔的值

我在一个文本文件中将以下内容导入到ArrayList中: 澳大利亚2 加纳4 中国3 西班牙1 我的ArrayList由另一个类Team的对象组成,该类具有TeamName和rank字段。 我可以得到以下内容,将String和int导入到团队名称中,但是我无法分离 ...

4 XSLT 2.0:将字符串拆分为逗号分隔值

我是XSLT的新手,并且在我必须按如下所述操作字符串的地方有一个要求。 输入字符串=“ 12345” 预期产出=“12345,1234,123,12” 任何人都可以帮助我在XSLT 2.0中实现这一目标 ...

6 在 where 条件用逗号分隔的字符串值拆分

如何将逗号分隔的文本传递给 where 条件。 我有一个像下面这样的查询场景 在这里,我需要通过 PER5AZ、SF4MDD 和 WQERR 过滤employeeid ID,我从前端以逗号分隔的字符串形式获得它。 如何在 SQL Server 2016 中执行此操作? ...

7 用逗号分割字符串并获取最后两个值

我有字段类型字符串,可以在其上获取两种类型的值: 简单字段,例如p1 复数域p1 / p2 / p3 / p4 现在我有两个问题: 由于检查是循环运行的,我如何才能毫不费力地确定类型是否复杂? 当我输入复杂类型时,我需要存储最后两个属性 ,例如p3和P ...

9 删除货币字符串PHP上的逗号

我使用这个jquery插件来管理来自autoNumber的货币输入。 从输入中,我得到了这样的字符串: 30,103,437.60 现在在POST中,我是这样的: 请在[PRICE]查看。 在数据库中,我将PRICE FIELD设置为DECIMAL(10,2) 。 因此, ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM