Числовой формат для разделителя без тысяч

Существует ли формат чисел, который бы создавал локализованное число без разделителя тысяч?

 Globalize.format("1000.12", "n?" )

Я понимаю, что мог сделать:

Globalize.culture().numberFormat[","]="";

Но у меня есть некоторые поля, где я хочу это отключить, и некоторые, где это должно быть включено. Например... Если значение:

1000.123 -> Хотите, чтобы он отображался в формате 1000, 12 или 1000,12 в зависимости от локали... Но без разделителя тысяч.

1 ответ

Решение

Вы можете использовать формат "d" вместо формата "n", чтобы исключить разделитель тысяч.

Globalize.format(1000.12, "d");

редактировать
Обратите внимание, что это будет работать, только если вы не заботитесь о десятичной части.

Если вы заботитесь о десятичной части, насколько я знаю, вы не можете исключить разделитель тысяч, кроме как одним из следующих способов:

  1. Установите символ тысячи в объекте культуры в пустую строку:

    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; }
    }
    
  2. Выполните замену строкового результата в формате:

    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"), "");
    }
    

    При таком подходе, если вы знаете, что в отформатированном результате никогда не будет больше тысячи символов, вы можете удалить регулярное выражение. В противном случае, если вы планируете использовать это много или внутри цикла, вы захотите кэшировать регулярное выражение и использовать его повторно.

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