1

私は Globalize for jQuery を使用しており、通貨のある数値を通貨記号のない数値に変換するソリューションを探しています。

Globalizeには関数Globalize.currencyParserがありますがv1.1.1、まだ空なので、変換しようとしました

Globalize(“fr”).numberParser()(“-10 000,99 €”)

しかし、そうでは10000,99ありませんでし-10000,99た。

関数 numberParse で

if ( prefix === negativePrefix && suffix === negativeSuffix ) { number *= -1; }

サフィックス !== 負のサフィックスであるため、数値は負に変換されません。だから、私は正規表現で私の問題を解決することにしました

( /^([^0-9]*)(([0-9,\'\٬\.\s]*[0-9]+)(,٫\.[0-9]+)?)([^0-9]*)$/ )

しかし、私は Globalize.currencyParser を使用したソリューションを好みます。考え?

4

2 に答える 2

0

理想的な解決策は を使用すること.currencyParser()ですが、Globalize ではまだ実装されていません: #364 (空の fn は間違いなくバグです)。もしあなたがパーサーに貢献したいなら、それは大歓迎です。私はそれをライブラリーに組み込むことができます。

それまでの間、残念ながらハックを使用する以外に何もすることはありません。1 つは、文字列からユーロ通貨を切り取り、結果の数値を解析することです。

// Ugly hack 
Globalize('fr').parseNumber('-1 000 000,00 €'.replace(/€/, '').trim())
// > -1000000 

```

于 2016-04-05T14:45:50.823 に答える
0

私は自分の.jsファイルに小さな関数を書きました

function getNumberAndCurrency(number_with_currency) {
  var numberNumberRe = ( /^([^0-9]*)(([0-9,\'\٬\.\s]*[0-9]+)(,٫\.[0-9]+)?)([^0-9]*)$/ );
  var match_array = numberNumberRe.exec(number_with_currency);

  if ('' == match_array[5]) {
    if ('-' == match_array[1].charAt(0)) {
      var currency = match_array[1].slice(1);
      var number = '-' + match_array[2];
    } else {
      var currency = match_array[1];
      var number = match_array[2];
    }
  } else {
    var currency = match_array[5];
    var number = match_array[1] + match_array[2];
  }

  return [number, currency];
}

これは、複数の通貨を使用する「en」、「de」、および「fr」ロケールで正常に機能します

于 2016-04-05T15:21:03.840 に答える