1С 8.3 Оставить в строке только числа
Данные > Примеры кода 1С > 1С 8.3 Строка, текст, буквы
Перейти в раздел примеры кода 1С 8.3:
В строке оставить только числа в 1С 8.3 (V.1) :
&НаКлиенте
Функция ТолькоЧисла(СтрокаРазличныеСимволы)
Если СтрДлина(СтрокаРазличныеСимволы) = 0 Тогда
Возврат "";
КонецЕсли;
РезультатЧисло = "";
Для а = 1 по СтрДлина(СтрокаРазличныеСимволы) Цикл
Символ = Сред(СтрокаРазличныеСимволы, а, 1);
Если Найти("0123456789", Символ) = 0 Тогда
Продолжить;
КонецЕсли;
РезультатЧисло = "" + РезультатЧисло + Символ;
КонецЦикла;
Возврат РезультатЧисло;
КонецФункции
&НаКлиенте
Процедура ОставитьВСтрокеТолькоЧисла()
ПреобразованнаяСтрокаВТолькоЧисла=ТолькоЧисла(тестСтрока);
Сообщить("Строка (только числа) ="+ПреобразованнаяСтрокаВТолькоЧисла);
КонецПроцедуры
Функция ТолькоЧисла(СтрокаРазличныеСимволы)
Если СтрДлина(СтрокаРазличныеСимволы) = 0 Тогда
Возврат "";
КонецЕсли;
РезультатЧисло = "";
Для а = 1 по СтрДлина(СтрокаРазличныеСимволы) Цикл
Символ = Сред(СтрокаРазличныеСимволы, а, 1);
Если Найти("0123456789", Символ) = 0 Тогда
Продолжить;
КонецЕсли;
РезультатЧисло = "" + РезультатЧисло + Символ;
КонецЦикла;
Возврат РезультатЧисло;
КонецФункции
&НаКлиенте
Процедура ОставитьВСтрокеТолькоЧисла()
ПреобразованнаяСтрокаВТолькоЧисла=ТолькоЧисла(тестСтрока);
Сообщить("Строка (только числа) ="+ПреобразованнаяСтрокаВТолькоЧисла);
КонецПроцедуры
В строке оставить только числа в 1С 8.3 (V.2):
&НаКлиенте
Функция ТолькоЧисла(СтрокаРазличныеСимволы) Экспорт
РезультатЧисло = "";
Для Индекс = 1 По СтрДлина(СтрокаРазличныеСимволы) Цикл
Символ = Сред(СтрокаРазличныеСимволы, Индекс, 1);
Функция ТолькоЧисла(СтрокаРазличныеСимволы) Экспорт
РезультатЧисло = "";
Для Индекс = 1 По СтрДлина(СтрокаРазличныеСимволы) Цикл
Символ = Сред(СтрокаРазличныеСимволы, Индекс, 1);
// таблица символов 1С доступна тут: https://koder.by/tablica_simvolov_1s.php
КодСимвола = КодСимвола(Символ);Если ((КодСимвола >= 48 И КодСимвола <= 57) Или (Символ = "-" И Индекс = 1)
Или (Символ = ",") Или (Символ = ".") Или (Символ = " ") Или (КодСимвола = 160)) Тогда
Если КодСимвола <> 32 И КодСимвола <> 160 Тогда
РезультатЧисло = РезультатЧисло + Символ;
КонецЕсли;
Иначе
Прервать;
КонецЕсли;
КонецЦикла;
//РезультатЧисло = СтроковыеФункцииКлиентСервер.СтрокаВЧисло(РезультатЧисло);
Возврат РезультатЧисло;
КонецФункции
&НаКлиенте
Процедура ОставитьВСтрокеТолькоЧисла()
ПреобразованнаяСтрокаВТолькоЧисла=ТолькоЧисла(тестСтрока);
Сообщить("Строка (только числа) ="+ПреобразованнаяСтрокаВТолькоЧисла);
КонецПроцедуры
В строке оставить только числа (V.3 от подписчика) с версии 1С 8.3.6.1977:
&НаКлиенте
&НаКлиенте
Процедура ОставитьВСтрокеТолькоЧисла()
ПреобразованнаяСтрокаВТолькоЧисла=ТолькоЧисла(тестСтрока);
Сообщить("Строка (только числа) ="+ПреобразованнаяСтрокаВТолькоЧисла);
КонецПроцедуры
Функция ТолькоЧисла(СтрокаРазличныеСимволы)
УдаляемыеСимволы = СтрСоединить(СтрРазделить(СтрокаРазличныеСимволы, "0123456789", Ложь));
Возврат СтрСоединить(СтрРазделить(СтрокаРазличныеСимволы, УдаляемыеСимволы, Ложь));
КонецФункции
УдаляемыеСимволы = СтрСоединить(СтрРазделить(СтрокаРазличныеСимволы, "0123456789", Ложь));
Возврат СтрСоединить(СтрРазделить(СтрокаРазличныеСимволы, УдаляемыеСимволы, Ложь));
КонецФункции
&НаКлиенте
Процедура ОставитьВСтрокеТолькоЧисла()
ПреобразованнаяСтрокаВТолькоЧисла=ТолькоЧисла(тестСтрока);
Сообщить("Строка (только числа) ="+ПреобразованнаяСтрокаВТолькоЧисла);
КонецПроцедуры
В строке оставить только числа (общ.модуль) в 1С 8.3:
УправлениеКонтактнойИнформациейКлиентСервер.ОставитьТолькоЦифрыВСтроке(СтрокаРазличныеСимволы);
2
комментарии
Кондратьев Дмитрий
24 июн 2022
С функциями СтрРазделить и СтрСоединить (появились в 8.3.6.1977) это делается так:
&НаКлиентеНаСервереБезКонтекста
Функция ТолькоЦифры(Строка)
УдаляемыеСимволы = СтрСоединить(СтрРазделить(Строка, "0123456789", Ложь));
Возврат СтрСоединить(СтрРазделить(Строка, УдаляемыеСимволы, Ложь))
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ТолькоЦифры(Строка)
УдаляемыеСимволы = СтрСоединить(СтрРазделить(Строка, "0123456789", Ложь));
Возврат СтрСоединить(СтрРазделить(Строка, УдаляемыеСимволы, Ложь))
КонецФункции
Fixin
08 май 2022
Пытался вставить код функции в серверный модуль и долго тупил, почему не видна функция, оказалось, нужно убрать &НаКлиенте.
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник