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

Clarion, Clarion 7

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

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

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

Сообщение Игорь Столяров »

Привет всем !

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

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

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

Заранее спасибо за любую идею. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

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

Сообщение Yufil »

А для чего регулярные выражения придумали? Что-то типа
Match(MyString, '^[0|1]*$', Match:Regular)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

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

Сообщение Игорь Столяров »

Yufil писал(а): 08 Сентябрь 2018, 8:55А для чего регулярные выражения придумали?
Упс ! Точно ! Спасибо ! :)
За теми кто отстал - не возвращаться. (С) Кодекс
Ал
✯ Ветеран ✯
Сообщения: 1011
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия

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

Сообщение Ал »

в простых случаях использовал NUMERIC
Аватара пользователя
morkovin
Ветеран
Сообщения: 908
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

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

Сообщение morkovin »

А для чего регулярные выражения придумали? Что-то типа
Match(MyString, '^[0|1]*$', Match:Regular)
А мне надо, чтобы в строке были только ноль, дефис и пробел. Попробовал
Match(MyString, '^[0|-| ]*$', Match:Regular)
не получается :(
WBR, morkovin
Ал
✯ Ветеран ✯
Сообщения: 1011
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия

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

Сообщение Ал »

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
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

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

Сообщение Yufil »

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