2009-06-03 84 views
0

我最近意识到有些国家用不同的逗号/句点表示法显示浮点数。本地化文本验证

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

这可能不是显示器的问题,但是文本输入呢?例如,我想如果我有一个十进制类型并将其显示在标签中,那么ToString()方法(或者您所选语言中的equiv)将使用本地化设置并正确显示它,并且各种解析“str - >数字'方法可能也会起作用。

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

感谢您的任何意见

回答

0

曾经在哪里他们居住或正在然而他们指定的,你需要封装是或可能是区域特定的或正在分析输入(验证),可能是区域设置特定的规则。这样你可以根据语言环境切换实现。

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

+0

是的,这就是我所希望的不是答案,但它是我的基本备份计划。我只是希望有人有这个神奇的子弹,但似乎没有人会这样做:) – LoveMeSomeCode 2009-06-03 22:28:31

0

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

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