Проверка строки на бинарность

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3745
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Проверка строки на бинарность

Сообщение Игорь Столяров » 08 Сентябрь 2018, 7:42

Привет всем !

Вот ещё интересная задача ... ;)

Есть некая строка c флагами (в общем случае, большая, загружена в память из файла).
Нужно проверить её содержимое на бинарность, т.е. в строке допустимы только "0" и "1".

Можно это как-то сделать без перебора всех символов в цикле ?
Хотелось бы, что-то вроде InString(), только наоборот ...

Заранее спасибо за любую идею. :)
«V» значит Вендетта !

Yufil
Ветеран движения
Сообщения: 1062
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

Проверка строки на бинарность

Сообщение Yufil » 08 Сентябрь 2018, 8:55

А для чего регулярные выражения придумали? Что-то типа
Match(MyString, '^[0|1]*$', Match:Regular)

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3745
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Проверка строки на бинарность

Сообщение Игорь Столяров » 08 Сентябрь 2018, 9:26

Yufil писал(а):
08 Сентябрь 2018, 8:55
А для чего регулярные выражения придумали?
Упс ! Точно ! Спасибо ! :)
«V» значит Вендетта !

Ал
Ветеран
Сообщения: 751
Зарегистрирован: 08 Июль 2005, 5:48
Откуда: Россия

Проверка строки на бинарность

Сообщение Ал » 08 Сентябрь 2018, 15:24

в простых случаях использовал NUMERIC

Аватара пользователя
morkovin
Ветеран
Сообщения: 543
Зарегистрирован: 20 Июль 2005, 13:53
Откуда: Volgograd, Russia
Контактная информация:

Проверка строки на бинарность

Сообщение morkovin » 12 Сентябрь 2018, 8:22

А для чего регулярные выражения придумали? Что-то типа
Match(MyString, '^[0|1]*$', Match:Regular)
А мне надо, чтобы в строке были только ноль, дефис и пробел. Попробовал
Match(MyString, '^[0|-| ]*$', Match:Regular)
не получается :(
WBR, morkovin

Ал
Ветеран
Сообщения: 751
Зарегистрирован: 08 Июль 2005, 5:48
Откуда: Россия

Проверка строки на бинарность

Сообщение Ал » 12 Сентябрь 2018, 9:21

morkovin писал(а):
12 Сентябрь 2018, 8:22
А для чего регулярные выражения придумали? Что-то типа
Match(MyString, '^[0|1]*$', Match:Regular)
А мне надо, чтобы в строке были только ноль, дефис и пробел. Попробовал
Match(MyString, '^[0|-| ]*$', Match:Regular)
не получается :(

Код: Выделить всё

MyString = '000-00--0- -0 0  --0   -   ---0----00'
IF  Match(MyString, '^[---| |0]*$', Match:Regular)
    STOP('yes')
ELSE
    STOP('no')
END

MyString = '000 00-0 -0 01  -0-- 000   -'
IF  Match(MyString, '^[---| |0]*$', Match:Regular)
    STOP('yes')
ELSE
    STOP('no')
END
если все хотите указывать в одном наборе, то '-' как первый или последний символ набора:

Код: Выделить всё

MyString = '000-00--0- -0 0  --0   -   ---0----00'
IF  Match(MyString, '^[- 0]*$', Match:Regular)
    STOP(clip(MyString)&' : yes')
ELSE
    STOP(clip(MyString)&' : no')
END

 MyString = '000-00--0- -00ПРИВЕТ0  --0   -   ---0----00'
IF  Match(MyString, '^[- 0]*$', Match:Regular)
    STOP(clip(MyString)&' : yes')
ELSE
    STOP(clip(MyString)&' : no')
END

Yufil
Ветеран движения
Сообщения: 1062
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

Проверка строки на бинарность

Сообщение Yufil » 12 Сентябрь 2018, 10:51

Там вместо квадратных скобок нужны фигурные, в Help для CW6 ошибка. Причём открывающая скобка должна быть удвоена. Писал по памяти ( давно не пользовал в Кларионе, только в JS и Python ) только как пример. И напортачил... :(
Да, возможно перед пробелом уместен символ \

Ответить