代码之家  ›  专栏  ›  技术社区  ›  LoveMeSomeCode

文本验证中的本地化

  •  0
  • LoveMeSomeCode  · 技术社区  · 15 年前

    我最近意识到一些国家使用不同的逗号/句号来显示浮点数。

    也就是说,我们有12500.34个,有些国家会把它列为12500.34个。

    这可能不是显示的问题,但是文本输入呢?例如,我设想如果我有一个decimal类型并将其显示在标签中,toString()方法(或您选择的语言中的equiv)将使用本地化设置并正确显示它,各种分析“str->number”方法可能也会工作。

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

    谢谢你的建议

    2 回复  |  直到 15 年前
        1
  •  0
  •   cwash    15 年前

    无论它们在哪里存在,或者指定了什么,您都需要封装特定于或可以特定于区域设置的规则,或者解析特定于区域设置的输入(用于验证)。通过这种方式,您可以根据区域设置切换实现。

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

        2
  •  0
  •   Licky Lindsay    15 年前

    这将非常依赖语言。没有两种语言处理这一点完全相同。

    我可以给出一些关于Java的建议。在Java中,您将以数字格式处理这个问题。如果numberFormat.parse()在不引发异常的情况下工作,那么它是正在使用的whataver区域设置中的有效数字。您可以设置您将接受的小数位数的最大值,等等。所有这些都是高度Java特定的,所以我不会麻烦进入它,除非你说Java是你正在使用的。