Вход | Регистрация

1С:Предприятие ::

Метки: 

Проверить текст на вхождение сразу нескольких символов

Я
   antihacker
 
13.06.18 - 08:54
Всем привет ! В теме вопрос уже озвучен. Нужно проверить текст. Есть ли в тексте числа(цифра) ? Знаю можно прогнать текст по циклу и проверить каждую букву на каждое число от 0 до 9. По проще нельзя ?
 
 
   1Сергей
 
1 - 13.06.18 - 08:55
Если Найти(Текст, "0")>0
    ИЛИ Найти(Текст, "1")>0
    ИЛИ Найти(Текст, "2")>0
    ...
    Тогда
   Lexey_
 
2 - 13.06.18 - 08:55
(0) регулярки
   Ненавижу 1С
 
3 - 13.06.18 - 09:05
ЦифраЕсть = Ложь;
Для й=0 по 9 цикл
  Если Найти(Текст,Строка(й))>0 Тогда
    ЦифраЕсть = Истина;
    Прервать;
  КонецЦикла;
КонецЦикла;
   Гипервизор
 
4 - 13.06.18 - 09:10
(1)(3) И где здесь вхождение сразу нескольких символов?
   Ненавижу 1С
 
5 - 13.06.18 - 09:11
(4) Цитата из текста автора поста: "Нужно проверить текст. Есть ли в тексте числа(цифра) ?"
   Cyberhawk
 
6 - 13.06.18 - 09:12
СимволыДляПроверки = "0123456789"
Для и = 0 по СтрДлина(СтрокаКандидат) Цикл
Если Найти(СимволыДляПроверки, СтрокаКандидат[и]) Тогда...
   antihacker
 
7 - 13.06.18 - 09:15
Регулярки не приемлю, так как не хочу зависит от внешних компонентов.
   novichok79
 
8 - 13.06.18 - 09:16
(0) ну тут либо регулярки, либо перебор символов.
раз не надо регулярок, то остается перебор символов. к счастью в типовых уже все придумано до нас

Функция ТолькоЦифрыВСтроке(Знач СтрокаПроверки, УчитыватьЛидирующиеНули = Истина, УчитыватьПробелы = Истина) Экспорт
    
    Если ТипЗнч(СтрокаПроверки) <> Тип("Строка") Тогда
        Возврат Ложь;
    КонецЕсли;
    
    Если НЕ ЗначениеЗаполнено(СтрокаПроверки) Тогда
        Возврат Истина;
    КонецЕсли; 
    
    Если НЕ УчитыватьПробелы Тогда
        СтрокаПроверки = СтрЗаменить(СтрокаПроверки, " ", "");
    КонецЕсли;
    
    Если НЕ УчитыватьЛидирующиеНули Тогда
        НомерПервойЦифры = 0;
        Для а = 1 По СтрДлина(СтрокаПроверки) Цикл
            НомерПервойЦифры = НомерПервойЦифры + 1;
            КодСимвола = КодСимвола(Сред(СтрокаПроверки, а, 1));
            Если КодСимвола <> 48 Тогда
                Прервать;
            КонецЕсли;
        КонецЦикла;
        СтрокаПроверки = Сред(СтрокаПроверки, НомерПервойЦифры);
    КонецЕсли;
    
    Для а = 1 По СтрДлина(СтрокаПроверки) Цикл
        КодСимвола = КодСимвола(Сред(СтрокаПроверки, а, 1));
        Если НЕ (КодСимвола >= 48 И КодСимвола <= 57) Тогда
            Возврат Ложь;
        КонецЕсли; 
    КонецЦикла; 

    Возврат Истина;
    
КонецФункции
   FIXXXL
 
9 - 13.06.18 - 09:19
Для а = 1 По СтрДлина(СтрокаПроверки) Цикл
        КодСимвола = КодСимвола(Сред(СтрокаПроверки, а, 1));
        Если (КодСимвола >= 48 И КодСимвола <= 57) Тогда
            ЕстьЦифра = Истина;
        КонецЕсли;
    КонецЦикла;
   azt-yur
 
10 - 13.06.18 - 09:23
Можно через запрос:
ВЫБРАТЬ
    &Текст ПОДОБНО "%[0123456789]%" КАК ЕстьЦифры
 
  Рекламное место пустует
   novichok79
 
11 - 13.06.18 - 09:24
(10) как вариант, кстати. правда по скорости хз как оно.
   antihacker
 
12 - 13.06.18 - 09:25
Тоже думал.  Но запрос работает на сервере. Будет лишинй раз грузить сервер.
   МихаилМ
 
13 - 13.06.18 - 09:29
http://catalog.mista.ru/public/464971/

и у скд есть лайк.
   igorPetrov
 
14 - 13.06.18 - 09:39
(7) Так и скажи, что не осилил ))))
   olegves
 
15 - 13.06.18 - 09:48
(0) Если КодСимвола(Проверяемый, Номер)>47 И КодСимвола(Проверяемый, Номер)<59 Тогда
    Это Число = Истина;
КонецЕсли;
   Сти
 
16 - 13.06.18 - 09:57
(7) зачем внешние компоненты для регулярок? Пользуюсь вот таким и бед не знаю: http://catalog.mista.ru/public/464971/
   Сти
 
17 - 13.06.18 - 09:58
+16 ой, опоздал, уже было в (13) )
   DrShad
 
18 - 13.06.18 - 10:02
(7) RegExp во всех осях есть
   МихаилМ
 
19 - 13.06.18 - 11:03
+(18)
   МихаилМ
 
20 - 13.06.18 - 11:03


Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует