Метод unformat

Назначение метода

Метод unformat в библиотеке AutoNumeric предназначен для обратного преобразования отформатированного числового значения в «сырое» числовое представление. Он удаляет визуальные элементы форматирования, такие как разделители тысяч, символы валют, пробелы, пользовательские префиксы и постфиксы, возвращая значение в форме, пригодной для математических операций или передачи в бизнес-логику.

Основная задача метода — извлечение чистого числа из строки, которая была преобразована AutoNumeric в формат, удобный для отображения пользователю.

Сигнатура и варианты использования

В зависимости от контекста применения в AutoNumeric встречаются следующие формы вызова:

AutoNumeric.unformat(formattedValue, options);

или в экземплярном контексте через методы, использующие ту же внутреннюю логику:

anElement.getNumericString(); // близкое по смыслу
anElement.getNumber();        // возвращает число

Метод unformat чаще рассматривается как статическая утилита для преобразования произвольных строк, а не только значений из DOM-элементов.


Логика преобразования

При выполнении unformat происходит последовательная очистка входного значения:

  • удаляются разделители групп разрядов (например, пробелы или запятые);
  • убираются символы валют и пользовательские префиксы;
  • нормализуется десятичный разделитель;
  • приводится знак числа к стандартному виду;
  • игнорируются визуальные настройки отображения.

Пример внутренней логики:

  1. Вход: "€ 1.234,56"
  2. Удаление символов валют: "1.234,56"
  3. Замена разделителей: "1234.56"
  4. Результат: 1234.56

Параметры метода

Метод принимает значение и набор опций, которые определяют правила обратного преобразования:

  • value — строка или число, подлежащее разформатированию;
  • options — объект конфигурации AutoNumeric, влияющий на интерпретацию формата.

Ключевые параметры конфигурации, влияющие на результат:

  • decimalCharacter — символ десятичного разделителя;
  • digitGroupSeparator — разделитель групп разрядов;
  • currencySymbol — символ валюты, подлежащий удалению;
  • currencySymbolPlacement — положение символа валюты;
  • negativeSignCharacter — символ отрицательного числа;
  • outputFormat — формат вывода, влияющий на интерпретацию результата.

Возвращаемое значение

Результат unformat зависит от контекста и входных данных:

  • строковое числовое представление без форматирования;
  • либо число (в зависимости от используемых опций и режима обработки).

Типичный результат:

"1234.56"

или

1234.56

В случае некорректного входного значения возвращается null либо NaN, если включена числовая интерпретация.


Отличие от связанных методов

Метод unformat часто сравнивается с другими средствами извлечения числового значения.

unformat

  • работает со строками;
  • предназначен для «чистого» преобразования форматированного значения;
  • не привязан напрямую к DOM.

getNumber

  • возвращает числовой тип (Number);
  • используется для получения значения из экземпляра AutoNumeric.

getNumericString

  • возвращает строку без форматирования;
  • сохраняет точность представления.

Ключевое отличие unformat заключается в универсальности: он способен обрабатывать произвольные строки, не связанные с конкретным инстансом.


Обработка различных форматов

Форматы с разделителями тысяч

Вход:

"1,234,567.89"

Результат:

"1234567.89"

Европейский формат чисел

Вход:

"1.234.567,89"

Результат при соответствующих настройках:

"1234567.89"

Валютные значения

Вход:

"€ 9 876,50"

Результат:

"9876.50"

Отрицательные числа

Вход:

"- 1.234,00"

Результат:

"-1234.00"

Работа с DOM-значениями

При использовании вместе с HTML-инпутами AutoNumeric часто хранит визуально отформатированное значение в value элемента. unformat используется для извлечения исходного числа перед отправкой данных на сервер.

Пример логики:

  • поле ввода содержит: "1 000,75"
  • unformat возвращает: "1000.75"

Это позволяет отделить слой представления от слоя данных.


Особенности локализации

Поведение метода зависит от локальных параметров конфигурации:

  • разные символы десятичного разделителя (. или ,);
  • различные групповые разделители (пробел, запятая, точка);
  • вариативность размещения валютного символа.

Неправильно заданные настройки приводят к ошибочной интерпретации числа, особенно при наличии неоднозначных форматов вроде:

"1.234"

которое может быть как «одна тысяча двести тридцать четыре», так и «1.234» в зависимости от локали.


Обработка некорректных значений

Метод учитывает нестандартные входные данные:

  • пустые строки → null или "";
  • строки без числовых символов → NaN или null;
  • частично повреждённые значения → попытка извлечения числовой части.

Примеры:

unformat("abc123")  // "123"
unformat("")        // null
unformat("€€€")     // null

Производительность

Метод выполняет последовательную строковую обработку, включающую:

  • фильтрацию символов;
  • замену разделителей;
  • парсинг числового формата.

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

  • длины входных значений;
  • сложности локальных правил форматирования;
  • количества замен и регулярных выражений внутри конфигурации.

Типичные сценарии использования

  • подготовка данных формы перед отправкой на сервер;
  • преобразование отображаемых значений в вычисляемый формат;
  • интеграция с финансовыми системами;
  • нормализация пользовательского ввода из разных локалей;
  • очистка импортированных строковых данных.

Взаимодействие с настройками AutoNumeric

Метод тесно связан с конфигурацией экземпляра и глобальными настройками:

  • изменения decimalCharacter мгновенно влияют на результат;
  • отключение группировки разрядов упрощает преобразование;
  • пользовательские символы валют требуют явного учёта при разборе строки.

Несоответствие конфигурации формату входных данных приводит к частичной или полной потере точности при разформатировании.