1С 8.3 Оставить в строке только числа - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Оставить в строке только числа

Данные > Примеры кода 1С > 1С 8.3 Строка, текст, буквы
В строке оставить только числа в 1С 8.3 (V.1) :
&НаКлиенте
Функция ТолькоЧисла(СтрокаРазличныеСимволы)

    Если
СтрДлина(СтрокаРазличныеСимволы) = 0 Тогда
        Возврат
"";
    КонецЕсли;

   
РезультатЧисло = "";
    Для
а = 1 по СтрДлина(СтрокаРазличныеСимволы) Цикл
       
Символ = Сред(СтрокаРазличныеСимволы, а, 1);

        Если
Найти("0123456789", Символ) = 0 Тогда
            Продолжить;
        КонецЕсли;

       
РезультатЧисло = "" + РезультатЧисло + Символ;
    КонецЦикла;

    Возврат
РезультатЧисло;

КонецФункции

&НаКлиенте
Процедура ОставитьВСтрокеТолькоЧисла()

   
ПреобразованнаяСтрокаВТолькоЧисла=ТолькоЧисла(тестСтрока);
   
Сообщить("Строка (только числа) ="+ПреобразованнаяСтрокаВТолькоЧисла);

КонецПроцедуры
В строке оставить только числа в 1С 8.3 (V.2):
&НаКлиенте
Функция ТолькоЧисла(СтрокаРазличныеСимволы) Экспорт

   РезультатЧисло = "";

   Для Индекс = 1 По СтрДлина(СтрокаРазличныеСимволы) Цикл
       Символ = Сред(СтрокаРазличныеСимволы, Индекс, 1);
      // таблица символов 1С доступна тут: https://koder.by/tablica_simvolov_1s.php
       КодСимвола = КодСимвола(Символ);
       Если ((КодСимвола >= 48 И КодСимвола <= 57) Или (Символ = "-" И Индекс = 1)
           Или (Символ = ",") Или (Символ = ".") Или (Символ = " ") Или (КодСимвола = 160)) Тогда
           Если КодСимвола <> 32 И КодСимвола <> 160 Тогда
               РезультатЧисло = РезультатЧисло + Символ;
           КонецЕсли;
       Иначе
           Прервать;
       КонецЕсли;
   КонецЦикла;

   //РезультатЧисло = СтроковыеФункцииКлиентСервер.СтрокаВЧисло(РезультатЧисло);

   Возврат РезультатЧисло;

КонецФункции

&НаКлиенте
Процедура ОставитьВСтрокеТолькоЧисла()

   ПреобразованнаяСтрокаВТолькоЧисла=ТолькоЧисла(тестСтрока);
   Сообщить("Строка (только числа) ="+ПреобразованнаяСтрокаВТолькоЧисла);

КонецПроцедуры

В строке оставить только числа (V.3 от подписчика) с версии 1С 8.3.6.1977:
&НаКлиенте
Функция ТолькоЧисла(СтрокаРазличныеСимволы)

   УдаляемыеСимволы = СтрСоединить(СтрРазделить(СтрокаРазличныеСимволы, "0123456789", Ложь));
   Возврат СтрСоединить(СтрРазделить(СтрокаРазличныеСимволы, УдаляемыеСимволы, Ложь));

КонецФункции

&НаКлиенте
Процедура ОставитьВСтрокеТолькоЧисла()

   ПреобразованнаяСтрокаВТолькоЧисла=ТолькоЧисла(тестСтрока);
   Сообщить("Строка (только числа) ="+ПреобразованнаяСтрокаВТолькоЧисла);

КонецПроцедуры
2
комментарии
Кондратьев Дмитрий
24 июн 2022
С функциями СтрРазделить и СтрСоединить (появились в 8.3.6.1977) это делается так:

&НаКлиентеНаСервереБезКонтекста
Функция ТолькоЦифры(Строка)
УдаляемыеСимволы = СтрСоединить(СтрРазделить(Строка, "0123456789", Ложь));
Возврат СтрСоединить(СтрРазделить(Строка, УдаляемыеСимволы, Ложь))
КонецФункции
Fixin
08 май 2022
Пытался вставить код функции в серверный модуль и долго тупил, почему не видна функция, оказалось, нужно убрать &НаКлиенте.
____________________
Copyright©, «Программист 1С в г.Минске», 12.03.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому