0

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 を設定する方法はないようです。率直に言って、その時点では何の意味もありません。

何か不足していますか?

4

2 に答える 2

0

残念ながら違います。クライアント上のロケール固有のコードは、GWT では非常に制限されています。ネイティブ JavaScript の使用を試すことができます (すべての欠点があります)。

しかし、そのような場合は、サーバー メソッドを呼び出す方が簡単であることがわかりました。1 つは、通常、多くの値を変換する必要がなく、この方法を必要とする頻度が低いため、この場合、ネットワーク経由でバイトを送信する過剰な処理は許容できることです。

これがオプションではなく、そのような数値を解析できることだけが必要な場合は、ロケールの形式を分離することをお勧めします。このアプローチに従えば、これは見た目よりも簡単です。

  • 小数点 (コンマまたはポイント) が何であるかを把握します。
  • 小数点または数字以外のものに一致する否定的なパターンを作成します。つまり、次のようになります。'[^0-9' + decimalPoint + ']'
  • このパターンを使用して、文字列から一致するものをすべて削除します
  • 小数点を.

これにより、解析が可能になります。フォーマットについては、良い解決策がありません。

于 2013-04-30T10:14:35.070 に答える