Есть ли способ получить десятичный разделитель и разделитель тысяч в API интернационализации ECMAscript?

Я пытаюсь использовать новый API интернационализации Javascript и хотел бы узнать, есть ли способ получить десятичный разделитель и разделитель тысяч для группировки Intl.NumberFormat пример?

E сть resolvedOptions метод на объекте, но это не обеспечивает символы.

Если кому-то интересно, то для en-US это будет запятая , и период . например, в 1,000.00,

2 ответа

Если ничего другого, в качестве хитрого решения (которое не проходит тест Турции; см. Комментарий), вы можете использовать вывод toLocaleString() определить информацию о форматировании чисел в локали. Для текущей локали, например:

var decimalSeparator = 
    (12345.6789).toLocaleString().match(/345(.*)67/)[1];
var thousandSeparator = 
    (12345.6789).toLocaleString().match(/12(.*)345/)[1];
var numberOfDecimals = 
    (12345.6789).toLocaleString().match(/345(\D*)(\d+)$/)[2].length;

Тот же трюк можно использовать для форматирования валюты, используя, например, (12345.6789).toLocaleString("en-GB", { style: "currency" }),

Боюсь, стандарт ECMA-402 не определяет API, который позволяет вам получать доступ к разделителям. Есть и другая проблема - на данный момент внедрение ECMA-402 не так широко, как хотелось бы.

Поэтому на данный момент, на вашем месте, я бы посмотрел что-то вроде привязки CLDR JSON или iLib, которая, очевидно, предоставляет эту информацию через LocaleInfo.getDecimalSeparator() а также getGroupingSeparator() функции.
КСТАТИ. Кажется, что iLib использует CLDR в качестве источника информации.

Другие вопросы по тегам