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

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

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

и у скд есть лайк.
14 igorPetrov
 
13.06.18
09:39
(7) Так и скажи, что не осилил ))))
15 olegves
 
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) )
18 DrShad
 
13.06.18
10:02
(7) RegExp во всех осях есть
19 МихаилМ
 
13.06.18
11:03
+(18)
20 МихаилМ
 
13.06.18
11:03