如何使用特定的语言环境在GWT中将String转换为Double?

时间:2013-04-30 09:36:40

标签: java gwt

在java中这很容易做到:

NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
myNumber = nf.parse(myString);

但是,我似乎无法在GWT中做同样的事情。首先,我将区域设置合并到MyModule.gwt.xml

<inherits name="com.google.gwt.i18n.I18N"/>
<extend-property name="locale" values="sl_SI"/>

还存在NumberFormat类:com.google.gwt.i18n.client.NumberFormat; 它使用“默认”区域设置。此处的默认值表示与“en_US”非常相似的固定语言环境,而不是浏览器或应用程序选择的默认语言环境。

似乎没有办法将NumberFormat设置为接受不同的语言环境。坦率地说,我当时没有看到任何意义。

我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

尝试将<meta name='gwt:property' content='locale=sl_SI' />添加到html主页

以下是对其原理的解释:https://stackoverflow.com/a/16295300/572830

以下是更广泛详细的解释:https://developers.google.com/web-toolkit/doc/latest/DevGuideI18nLocale

答案 1 :(得分:0)

不幸的是,不是。客户端上的区域设置特定代码在GWT中非常有限。您可以尝试使用本机JavaScript(具有所有缺点)。

但我发现在这种情况下调用服务器方法更容易。首先,我通常不需要转换许多值,并且我需要这个方法的速率很低,因此在这种情况下,通过网络发送字节的过度杀伤是可以忍受的。

如果这不是您的选项而您只需要能够解析这样的数字,我建议将区域设置的格式分开。如果您遵循这种方法,这比看起来更容易:

  • 找出小数点(逗号或点)是什么。
  • 创建一个负数模式,匹配任何非小数点或数字,即:'[^0-9' + decimalPoint + ']'
  • 使用此模式删除与字符串匹配的任何内容
  • .
  • 替换小数点

这允许解析。对于格式化,我没有一个好的解决方案。