【问题标题】:localization in text validation文本验证中的本地化
【发布时间】:2010-10-31 02:27:58
【问题描述】:

我最近意识到有些国家/地区使用不同的逗号/句点表示法显示浮点数。

即。我们会有 12,500.34,有些国家会将其列为 12.500,34

这可能不是显示的问题,但是文本输入呢?例如,我想如果我有一个小数类型并将其显示在标签中,那么 ToString() 方法(或您选择的语言中的等价物)将使用本地化设置并正确显示它,以及各种解析 'str ->number' 方法可能也可以。

但是文本验证呢?比如说我想要一个文本框只允许 5 个数字,然后是一个可选的小数点和最多 4 个数字?当您不知道它们的分隔符是什么时,这种情况下的常见解决方案是什么?显然我现在使用的硬编码正则表达式模式会失败,所以我只是想知道你们中的一些人在这些情况下做了什么?

感谢您的建议

【问题讨论】:

    标签: validation localization


    【解决方案1】:

    无论它们居住在哪里,无论它们是如何指定的,您都需要封装特定于或可能特定于区域设置的规则,或者正在解析可能特定于区域设置的输入(用于验证)。这样您就可以根据语言环境切换实现。

    根据它们的方式和位置,您可以使用一些框架 (JPF does this) 在框架内应用,或者您也可以扩展您的框架以使用它们。

    【讨论】:

    • 是的,我希望这不是答案,但这是我的基本备份计划。我只是希望有人对此有灵丹妙药,但似乎没有人这样做:)
    【解决方案2】:

    这将非常依赖于语言。没有两种语言完全一样地处理这个问题。

    我可以提供一些关于 Java 的建议。在 Java 中,您可以使用 NumberFormat 来处理这个问题。如果 NumberFormat.parse() 在没有抛出异常的情况下工作,那么它是正在使用的任何语言环境中的有效数字。您可以设置您将接受的最大小数位数等。所有这些都是高度特定于 Java 的,所以除非您说 Java 是您正在使用的,否则我不会打扰它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-25
      • 2014-06-22
      • 2011-08-26
      相关资源
      最近更新 更多