Очистка номера телефона от "мусора" (нецифровых символов)

FastCode 51 7

Очевидным решением этой задачи является организация цикла, в котором по одному просматриваются символы исходной строки и к результату добавляются символы, являющиеся цифрами. Но, во-первых, здесь требуется цикл, на организацию которого будет потрачено время, во-вторых, без стринг-билдера посимвольная конкатенация не эффективна. В платформе 8.3.6 появились функции СтрРазделить и СтрСоединить, которые позволяют решить эту задачу в одну строку без цикла:

Автор: ildarovich

СтрСоединить(СтрРазделить(СтрокаСЦифрами, СтрСоединить(СтрРазделить(СтрокаСЦифрами, "0123456789"))))

// Если список ненужных символов известен, например, "(", ")" и "-", то выражение может быть еще короче:

СтрСоединить(СтрРазделить(СтрокаСЦифрами, "()-"))
Орфографическая ошибка в стринг: стринг
Орфографическая ошибка в билдера: билдера
TurboConf - расширение Конфигуратора 1С

Комментарии

Farovsky
#1, 27 июля 2020 11:46

СтрСоединить СтрРазделить СтрСоединить СтрРазделить СтрСоединить СтрРазделить СтрСоединить СтрРазделить
СтрРазделить СтрСоединить СтрРазделить СтрСоединить


FastCode
#2, 27 июля 2020 12:35

(1) Farovsky, первый СтрРазделить получает все символы "не цифры", потом соединяем, и опять разделяем исходный номер, только уже этими полученными символами. И затем снова соединяем для получения результата.


bolsun
#3, ред. 27 июля 2020 12:37

Оформил в виде отдельной функции

//Функция очищает номер телефона от нецифровых символов
Функция ОчиститьНомер(Номер, ОчищаемыеСимволы = "") Экспорт
	
	Если ПустаяСтрока(ОчищаемыеСимволы) Тогда
		
		Возврат СтрСоединить(СтрРазделить(Номер, СтрСоединить(СтрРазделить(Номер, "0123456789"))));
		
	КонецЕсли;
	
	Возврат СтрСоединить(СтрРазделить(Номер, ОчищаемыеСимволы))	
	
КонецФункции


Модератору