Числовой формат для разделителя без тысяч
Существует ли формат чисел, который бы создавал локализованное число без разделителя тысяч?
Globalize.format("1000.12", "n?" )
Я понимаю, что мог сделать:
Globalize.culture().numberFormat[","]="";
Но у меня есть некоторые поля, где я хочу это отключить, и некоторые, где это должно быть включено. Например... Если значение:
1000.123 -> Хотите, чтобы он отображался в формате 1000, 12 или 1000,12 в зависимости от локали... Но без разделителя тысяч.
1 ответ
Вы можете использовать формат "d" вместо формата "n", чтобы исключить разделитель тысяч.
Globalize.format(1000.12, "d");
редактировать
Обратите внимание, что это будет работать, только если вы не заботитесь о десятичной части.
Если вы заботитесь о десятичной части, насколько я знаю, вы не можете исключить разделитель тысяч, кроме как одним из следующих способов:
Установите символ тысячи в объекте культуры в пустую строку:
Globalize.culture().numberFormat[","] = ""; Globalize.format(1000.12, "n");
Вы можете довольно легко превратить это в служебную функцию:
function formatNumberNoThousands(num, format, culture) { var numberFormat = Globalize.cultures[culture || Globalize.culture().name].numberFormat, thousands = numberFormat[","]; numberFormat[","] = ""; try { return Globalize.format(num, format, culture); } finally { numberFormat[","] = thousands; } }
Выполните замену строкового результата в формате:
Globalize.format(1000.12, "d").replace(new RegExp("\\" + Globalize.culture().numberFormat[","], "g"), "");
Который также можно легко превратить в служебную функцию:
function formatNumberNoThousands(num, format, culture) { return Globalize.format(num, format).replace(new RegExp("\\" + Globalize.culture(culture).numberFormat[","], "g"), ""); }
При таком подходе, если вы знаете, что в отформатированном результате никогда не будет больше тысячи символов, вы можете удалить регулярное выражение. В противном случае, если вы планируете использовать это много или внутри цикла, вы захотите кэшировать регулярное выражение и использовать его повторно.