Страница 1 из 1
Проверка строки на бинарность
Добавлено: 08 Сентябрь 2018, 7:42
Игорь Столяров
Привет всем !
Вот ещё интересная задача ...
Есть некая строка c флагами (в общем случае, большая, загружена в память из файла).
Нужно проверить её содержимое на бинарность, т.е. в строке допустимы только "0" и "1".
Можно это как-то сделать без перебора всех символов в цикле ?
Хотелось бы, что-то вроде InString(), только наоборот ...
Заранее спасибо за любую идею.
Проверка строки на бинарность
Добавлено: 08 Сентябрь 2018, 8:55
Yufil
А для чего регулярные выражения придумали? Что-то типа
Match(MyString, '^[0|1]*$', Match:Regular)
Проверка строки на бинарность
Добавлено: 08 Сентябрь 2018, 9:26
Игорь Столяров
Yufil писал(а): ↑08 Сентябрь 2018, 8:55А для чего регулярные выражения придумали?
Упс ! Точно ! Спасибо !
Проверка строки на бинарность
Добавлено: 08 Сентябрь 2018, 15:24
Ал
в простых случаях использовал NUMERIC
Проверка строки на бинарность
Добавлено: 12 Сентябрь 2018, 8:22
morkovin
А для чего регулярные выражения придумали? Что-то типа
Match(MyString, '^[0|1]*$', Match:Regular)
А мне надо, чтобы в строке были только ноль, дефис и пробел. Попробовал
Match(MyString, '^[0|-| ]*$', Match:Regular)
не получается
Проверка строки на бинарность
Добавлено: 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
Проверка строки на бинарность
Добавлено: 12 Сентябрь 2018, 10:51
Yufil
Там вместо квадратных скобок нужны фигурные, в Help для CW6 ошибка. Причём открывающая скобка должна быть удвоена. Писал по памяти ( давно не пользовал в Кларионе, только в JS и Python ) только как пример. И напортачил...
Да, возможно перед пробелом уместен символ
\