Метод unformatLocalized

Метод unformatLocalized в библиотеке AutoNumeric предназначен для преобразования локализованного строкового представления числа обратно в «чистый» числовой формат с учётом текущих правил локали. В отличие от базового unformat, который работает с универсальными настройками форматирования, unformatLocalized учитывает особенности конкретной локали: разделители тысяч, десятичные символы, возможные нестандартные символы группировки и правила отображения отрицательных значений.

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

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

Ключевая особенность:

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

Метод особенно важен в системах, где пользовательский ввод зависит от региональных настроек, например:

  • европейский формат 1.234,56;
  • американский формат 1,234.56;
  • арабские и индийские системы группировки;
  • кастомные локали с нестандартными символами.

Сигнатура метода

AutoNumeric.unformatLocalized(formattedValue, options);

или в контексте экземпляра:

anElement.unformatLocalized();

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

Параметры

formattedValue

Тип: string

Строка, содержащая локализованное числовое значение. Может включать:

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

options

Тип: object (опционально)

Объект дополнительных параметров, влияющих на процесс преобразования. В зависимости от конфигурации AutoNumeric может поддерживать:

  • decimalCharacter
  • digitGroupSeparator
  • currencySymbol
  • negativePositiveSignPlacement
  • overrideLocalSettings

Эти параметры позволяют переопределять локальные правила при разборе строки.

Алгоритм работы метода

Внутренняя логика unformatLocalized включает несколько этапов обработки входной строки:

  1. Нормализация символов

    • удаление нечисловых символов, не относящихся к форматированию;
    • замена нестандартных пробелов;
    • унификация Unicode-символов.
  2. Определение локальных разделителей

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

    • удаляются все символы разделения тысяч;
    • структура числа сохраняется без визуального форматирования.
  4. Приведение к стандартному виду

    • десятичный разделитель заменяется на точку . (внутренний формат JavaScript);
    • формируется строка, совместимая с parseFloat или Number.
  5. Возврат результата

    • возвращается строка или число (в зависимости от конфигурации AutoNumeric).

Отличие от unformat

Методы unformat и unformatLocalized решают схожую задачу, но различаются уровнем учёта локали.

Характеристика unformat unformatLocalized
Учет локали минимальный полный
Поддержка нестандартных разделителей ограниченная расширенная
Надёжность при мультиязычном вводе средняя высокая
Использование пользовательских локалей частичное полное

unformatLocalized применяется в сценариях, где входные данные могут быть сформированы вне контроля библиотеки, например:

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

Примеры использования

Базовый пример

const formatted = "1.234,56";
const raw = AutoNumeric.unformatLocalized(formatted);

console.log(raw); // "1234.56"

В данном случае строка с европейским форматированием преобразуется в стандартное представление.

Использование в контексте локали

const formatted = "2 500 000,99";

const value = AutoNumeric.unformatLocalized(formatted, {
    decimalCharacter: ",",
    digitGroupSeparator: " "
});

console.log(value); // "2500000.99"

Метод корректно интерпретирует пробел как разделитель тысяч и запятую как десятичный символ.

Работа с валютными строками

const formatted = "€ 9.876,50";

const result = AutoNumeric.unformatLocalized(formatted, {
    currencySymbol: "€",
    currencySymbolPlacement: "p"
});

console.log(result); // "9876.50"

Символ валюты игнорируется при преобразовании, если он указан в настройках.

Обработка нестандартных символов

const formatted = "١٬٢٣٤٫٥٦"; // арабская запись

const value = AutoNumeric.unformatLocalized(formatted, {
    decimalCharacter: "٫",
    digitGroupSeparator: "٬"
});

console.log(value); // "1234.56"

Метод поддерживает Unicode-разделители, характерные для арабской локали.

Особенности работы с ошибочными данными

Если входная строка содержит некорректные или смешанные символы, поведение метода зависит от конфигурации:

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

Примеры проблемных входных данных:

  • "12,34,56" (двойная группировка);
  • "1.2.3,45" (несогласованные разделители);
  • "ABC123,45" (лишние символы).

Использование в связке с форматированием

unformatLocalized часто применяется как обратная операция к форматированию:

const formatted = anElement.getNumberString();
const numericValue = AutoNumeric.unformatLocalized(formatted);

Это позволяет обеспечить симметрию:

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

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

Метод оптимизирован для массовой обработки строковых значений. При работе с большими массивами данных следует учитывать:

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

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

Типичные сценарии применения

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

Поведение при пустых значениях

Если входная строка:

  • пустая;
  • содержит только символы форматирования;
  • не содержит цифр,

результат зависит от конфигурации AutoNumeric:

  • может возвращаться "";
  • может возвращаться 0;
  • может возвращаться NaN.

Эта гибкость позволяет адаптировать поведение под бизнес-логику приложения.

Ограничения метода

Несмотря на расширенную поддержку локалей, существуют ограничения:

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

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