【问题标题】:Java number format validationJava 数字格式验证
【发布时间】:2020-08-05 12:02:30
【问题描述】:

您能否建议使用 Java 验证数字格式的解决方案。 作为输入参数,我收到字符串。比如有欧洲格式:1.234,56 然后我做解析:

NumberFormat.getNumberInstance(locale).parse(value) 

但在解析之前我需要验证。 输入数据示例: 1..234,,56 - 不应该有效但可以解析

【问题讨论】:

  • 为什么它应该是无效的?根据什么规则?如果您的规则不是“可解析的内容是有效的”,那么 you 需要定义什么是有效的,例如使用正则表达式。

标签: java validation number-formatting


【解决方案1】:

您可以构建正则表达式来检查字符串中包含逗号或小数的格式。 还可以参考正则表达式,例如: ^\d{1,3}|\d(([ ,]?\d{3})*([.,]\d{2}+)?$)

你也可以看看这个:Java regex to check if string is valid number format (comma and decimal point placing)

【讨论】:

    【解决方案2】:

    嗯,有很多可能的解决方案。但是对于这种情况,最好使用异常。当无法将字符串转换为数字时,基本上是给用户写一条消息,说他写错了数字,并要求他输入新的数字。要选择正确的号码类型,您可以使用overloading

    try {
        NumberFormat.getNumberInstance(locale).parse(value)
    }
    catch(Exception e) {
        System.out.println("The number entered is invalid.");
        // Enter the new number code
    }
    

    【讨论】:

      猜你喜欢
      • 2018-09-18
      • 2022-08-03
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 2021-06-20
      • 1970-01-01
      • 2012-12-03
      • 2012-01-29
      相关资源
      最近更新 更多