【问题标题】:Parse BigDecimal from String containing a number in arbitrary format从包含任意格式数字的字符串中解析 BigDecimal
【发布时间】:2011-02-24 14:28:58
【问题描述】:

我们从格式为文本的 XLS 单元格中读取数据。

单元格希望包含一个数字,输出将是 BigDecimal(因为任意精度)。

问题是,单元格格式也是任意的,这意味着它可能包含如下数字:

  • 带有货币符号 ($1000)
  • 前导和尾随空格,或数字之间的空格(例如 1 000 )
  • 数字分组符号(例如 1,000.0)
  • 当然是负数
  • 'o's 和 'O's 作为零(例如 1,ooo.oo)
  • 其他我想不到的

主要是因为最后一点,我正在寻找一个标准库,它可以完成所有这些工作,并且是可配置的、经过良好测试的等等。

我首先查看了 Apache,什么也没发现,但我可能是盲人......也许这对其他人来说是一个微不足道的答案......

更新:问题的领域是金融应用。实际上,我期待一个库,其中域可以是输入参数 - 金融、科学等。也许更具体:带有货币符号的金融?有股票代码?使用距离和其他测量单位?我不敢相信我是第一个想到这种事情的人......

【问题讨论】:

  • 理想情况下你应该知道包含大整数的列

标签: java bigdecimal number-formatting


【解决方案1】:

我不知道任何图书馆,但你可以试试:

  • 把你的电话号码串起来。 (例如:$1,00o,oOO.00)
  • 删除所有出现的 $、空格或任何其他您能想到的字符串...
  • 替换出现的 o 和 O。
  • 尝试解析数字=]

这应该解决了 99% 的条目...

【讨论】:

  • 是的,这就是我目前所做的。感觉不太专业。
  • @Gabor 如果你的数据是垃圾,你的逻辑也必须是垃圾:-)
  • 没错...如果您真的想变得专业,请为您的数据制作一些模式=]
【解决方案2】:

购买包含合法成人内容的大量照片甚至更好的视频。使用这些资源创建一个网站,但使用验证码限制访问,验证码将显示未解决的数字格式。创建一组已知数字格式的数字解码器,并创建一个算法,该算法将根据用户解决的验证码添加新的解码器。

【讨论】:

  • :-) 我需要几分钟来理解这个答案。电影越好,解码率越高! +1,我喜欢它:)
  • 无法决定给予什么:+1 / -1 / 标记为冒犯性
  • 也就是我们常说的“炮弹打麻雀”。我不是在寻找 AI 强度的解决方案...
  • @Gabor Kulcsar 真的吗?那么问题应该限制解决方案域。如果不使用某种人工智能,就无法解决未知问题。
  • @Boris:如果确实是错误的,可以说“我无法解析这个数字”。对于会计师来说,“O”等于“0”,这是我学到的一件事。所以他们expext“Iooo”被解析。我怀疑还有其他像这样的标准期望,但因为我不是会计师,所以我不知道这些 - 这就是为什么我正在寻找一些收集的智慧。我绝对不是在寻找 AI。
【解决方案3】:

我想这就是我一直在寻找的:

http://site.icu-project.org/

非常强大的库,虽然目前还不清楚它是否只能格式化或所有格式化的东西都可以解析回来。

【讨论】:

    猜你喜欢
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多