2016-11-08 7 views
0

実行時に定義されるセパレータを使用してJavaScriptで数値をフォーマットする必要があります。カスタムセパレータを使用したNumber.toLocaleString()。

千と小数点の区切り文字の組み合わせが特定のロケールと一致しないことがあります。

JavaScriptに1000と小数点の区切り文字を入力する方法はありますかtoLocaleString()?私が定義した値を明示的にNumberFormatに使用するか?

ロケールコードを使用した例と他の値(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString)を使用している例がありますが、これらは使用例をカバーしていません。

+1

http://stackoverflow.com/questions/37994133/change-decimal-mark/37994346#37994346 – Teemu

+0

私は質問で述べたように、私はそう設定実行時まで期待小数点および桁区切りを知りませんロケールはこの例では実行できません。 – dougajmcdonald

+0

'、'、 '.'とスペースの3つのセパレータが実際には3つあります。実行時に正しい組み合わせを検出し、適切な言語タグを選ぶことができます。あるいは区切り文字は 'a'、' x'などのように完全にカスタムですか? – Teemu

答えて

2

既知のセパレータを使用して文字列をフォーマットし、次に未知のセパレータを検索/置換することもできます。

function formatNum(num, separator, fraction) { 
    var str = num.toLocaleString('en-US'); 
    str = str.replace(/\./, fraction); 
    str = str.replace(/,/g, separator); 
    return str; 
} 

formatNum(12342.2, "a", "x"); 
//12a342x2 
+0

これは賢明で恐ろしい解決策です!私はそれを憎み、愛しています! – dougajmcdonald

+0

:)なぜ恐ろしいですか? –

+0

これは実際には非常に賢いとエレガントなソリューションラリーです! en-US形式が変わらない限り、everthignはうまくいくはずです! – Victor

関連する問題