Книга знаний

1С:Предприятие / Приемы программирования / Встроенный язык

Как отформатировать строку по маске

Например, есть необходимость имеющийся номер телефона "9031234523" или "+79031234567"
преобразовать к формату "+7 (903) 123 45 67". Как это легко и быстро сделать штатными средствами
1С без использования регулярных выражений
Автор статьи: askharlov | Редакторы:
Последняя редакция №3 от 01.11.17 | История
URL: http://kb.mista.ru/article.php?id=953

Ключевые слова: формат, маска, регулярные выражения


Входящие параметры:
- НомерТелефона. Например: «79031232334»
Дополнительный инструментарий:
- Элемент формы поле вода «Телефон» с установленной маской. Например: «+7 (999)  999 99 99»
Результат:
- НомерТелефонаСМаской

Пример кода:

МаскаТелефона = ЭлементыФормы.Телефон.Маска;

КвоЦифрВМаске = 0;
Если НЕ ПустаяСтрока(МаскаТелефона) Тогда
Для НомерСимволаМаски = 1 По СтрДлина(МаскаТелефона) Цикл
 ТекущийСимволМаски = Сред(МаскаТелефона, НомерСимволаМаски, 1);
 Если ТекущийСимволМаски = "9" Тогда
  КвоЦифрВМаске = КвоЦифрВМаске + 1;
 КонецЕсли;      
КонецЦикла;  
КонецЕсли;
Если КвоЦифрВМаске = 0 Тогда
ТелефонДляМаски = НомерТелефона;
Иначе
ТелефонДляМаски = Прав(НомерТелефона, КвоЦифрВМаске);
КонецЕсли;      
ЭлементыФормы.Телефон.Значение = ТелефонДляМаски; // применяем маску
НомерТелефонаСМаской = ЭлементыФормы.Телефон.Значение; // получаем строку с маской


Естественно, если в НомерТелефона присутствуют нецифровые символы (например пробелы или «(« или
«)»), то можно предварительно его обработать, оставив только цифры

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика