Есть ли способ получить десятичный разделитель и разделитель тысяч в 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 в качестве источника информации.