Страница 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 ) только как пример. И напортачил... :(
Да, возможно перед пробелом уместен символ \