Функция "Удалить числа из строки"

1. soldatkin 12 29.05.24 09:45 Сейчас в теме
Потребовалось по задаче удалить все цифры из наименований подразделений и направлений деятельности. В БСП и ощих модулях функции для удаления чисел из строки я не нашел, поэтому написал свою функцию. Код для вставки в модули прилагаю ниже.

Функция удаляет все числа из строки.


Функция УбратьЛишниеСимволыИзСтроки(Строка) Экспорт

РезультирующаяСтрока = "";
массивЧисел = новый массив;

для сим = 48 по 57 цикл
массивЧисел.Добавить(Символ(сим));
КонецЦикла;

для каждого эл из массивЧисел цикл
Для н = 1 По СтрДлина(Строка) Цикл
РезультирующаяСтрока = СтрЗаменить(Строка, эл, "");
Строка = РезультирующаяСтрока;
КонецЦикла;
КонецЦикла;

Возврат строка;

КонецФункции
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 29.05.24 09:57 Сейчас в теме
(1)
СтрСоединить(СтрРазделить(Строка, "0123456789"))

не хвататет для такой операции?
Vinzor; user1880116; Vlan; +3 Ответить
3. Vlan 36 29.05.24 10:24 Сейчас в теме
(2) Ну, может у него версия платформы ниже 8.3.6?
Можно еще так:
	Для сч=-СтрДлина(Стр) По -1 Цикл
		Сим=Сред(Стр,-сч,1);
		Если Найти("0123456789",Сим)>0 Тогда
			Стр=Лев(Стр,-сч-1)+Прав(Стр,СтрДлина(Стр)+сч);
		КонецЕсли;
	КонецЦикла;
4. nomad_irk 76 29.05.24 10:27 Сейчас в теме
(3)
Ну, может у него версия платформы ниже 8.3.6?

Версию про злобных буратин не будем рассматривать :)
11. Vinzor 107 29.05.24 11:56 Сейчас в теме
(2) С параметрами, пишут, чуток быстрее работает
СтрСоединить(СтрРазделить(Строка, "0123456789", Ложь), "")
starik-2005; +1 Ответить
12. nomad_irk 76 29.05.24 11:58 Сейчас в теме
(11)возможно, не заморачивался. я просто показал более изящный вариант решения.
6. user1880116 29.05.24 10:31 Сейчас в теме
(1) Бестолковое говно, которое еще и портит вызывающему значение параметра.
7. user1880116 29.05.24 11:22 Сейчас в теме
(1)
В БСП и ощих модулях функции для удаления чисел из строки я не нашел
А в какой версии БСП ты хоть искал-то?
5. scarl1n 10 29.05.24 10:30 Сейчас в теме
Не понял, для чего цикл по строке, если СтрЗаменить() заменяет по всей строке, а не первый попавшийся.
8. Boneman 302 29.05.24 11:35 Сейчас в теме
стандартная функция БСП находится в модуле

СтроковыеФункцииБЗККлиентСервер.УдалитьЦифрыИзСтроки

// Убирает цифры из строки.
//
// Параметры:
//    Строка - Исходная строка.
//
// Возвращаемое значение:
//     Строка - Строка без цифр.
//
Функция УдалитьЦифрыИзСтроки(Строка) Экспорт
	Возврат УдалитьСимволы(Строка, "0123456789");
КонецФункции

// Убирает указанные символы из строки.
//
// Параметры:
//    Строка           - Строка - Исходная строка.
//    УдаляемыеСимволы - Строка - Удаляемые символы.
//
// Возвращаемое значение:
//     Строка - Строка без указанных символов.
//
Функция УдалитьСимволы(Строка, УдаляемыеСимволы) Экспорт
	// Текущий вариант (с Ложь и "") оказался быстрее чем вариант без параметров ~ на 5-15% (зависит от длин строк):
	// СтрСоединить(СтрРазделить(Строка, УдаляемыеСимволы)).
	Возврат СтрСоединить(СтрРазделить(Строка, УдаляемыеСимволы, Ложь), "");
КонецФункции
Показать
10. user1880116 29.05.24 11:41 Сейчас в теме
(8)
СтроковыеФункцииБЗККлиентСервер
И давно это стало БСПшным модулем?
9. jmw 61 29.05.24 11:39 Сейчас в теме
В 8.3.23 разрешили регулярно выражаться:
СтрЗаменитьПоРегулярномуВыражению(стр, "[0-9]", "")
BarsukM; starik-2005; +2 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот