Как сделать, подскажите

panehsi

Client
Регистрация
21.07.2012
Сообщения
6
Благодарностей
1
Баллы
3
Есть число в переменной, нужно в зависимости от числа положить данные в тот или иной список.

Вариантов несколько:
меньше 1000 в один список
больше 1000, но меньше 5000 в другой
и т.п. всего 6-ть вариантов

Пробую через Swith, числа разные, но результат один - все идет через Default, видимо что то не так прописываю

Подскажите какие условия прописать в Swith чтобы заработало. Или может есть еще варианты без Swith-а...
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113
Switch сравнивает только по точному совпадению.
Вам тут нужно городить огород из операторов IF и там прописывать {-Variable.a-}>1000 && {-Variable.a-}<5000
 
  • Спасибо
Реакции: panehsi

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Switch сравнивает только по точному совпадению.
Вам тут нужно городить огород из операторов IF и там прописывать {-Variable.a-}>1000 && {-Variable.a-}<5000
{-Variable.a-}>1000 это условие лишнее)
 
  • Спасибо
Реакции: panehsi

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113
Ну да, в принципе можно просто по возрастанию проверять.
{-Variable.a-}<1000
{-Variable.a-}<5000
{-Variable.a-}<10000
и т.д.
 
  • Спасибо
Реакции: doc

panehsi

Client
Регистрация
21.07.2012
Сообщения
6
Благодарностей
1
Баллы
3
Switch сравнивает только по точному совпадению.
Вам тут нужно городить огород из операторов IF и там прописывать {-Variable.a-}>1000 && {-Variable.a-}<5000
Спасибо за ответ, я так и подумал, что Swith или не делает двойное сравнение или синтаксис у меня кривой. Оказывается он сравнивает только точные совпадения без условий, значит отличия от IF не только в размерах)

Если я вас правильно понял, например для такого условия - "больше 1000, но меньше 5000", мне нужно нужно прописать в IF так {-Variable.a-}>1000 && {-Variable.a-}<5000.

И еще вопрос по регулярным выражениям ...
Нужно совместить 2-а регулярных выражения, делаю так (рег.1|рег.2) - не работает, но каждое по отдельности работает. Подскажите и здесь, что не так делаю?
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113
Спасибо за ответ, я так и подумал, что Swith или не делает двойное сравнение или синтаксис у меня кривой. Оказывается он сравнивает только точные совпадения без условий, значит отличия от IF не только в размерах)

Если я вас правильно понял, например для такого условия - "больше 1000, но меньше 5000", мне нужно нужно прописать в IF так {-Variable.a-}>1000 && {-Variable.a-}<5000.

И еще вопрос по регулярным выражениям ...
Нужно совместить 2-а регулярных выражения, делаю так (рег.1|рег.2) - не работает, но каждое по отдельности работает. Подскажите и здесь, что не так делаю?

Выше написал, что можно без двойных условий, просто сравнивайте
{-Variable.a-}<1000
{-Variable.a-}<5000
{-Variable.a-}<10000
и т.д.
Соответственно, если на первом ифе нет, то число уже больше 1000, так что во втором условии нет смысла.

По регуляркам - приложите точный пример того, что используете. Так, по примеру всё правильно, но явно там есть еще какие то условия.
 

panehsi

Client
Регистрация
21.07.2012
Сообщения
6
Благодарностей
1
Баллы
3
Выше написал, что можно без двойных условий, просто сравнивайте
{-Variable.a-}<1000
{-Variable.a-}<5000
{-Variable.a-}<10000
и т.д.
Соответственно, если на первом ифе нет, то число уже больше 1000, так что во втором условии нет смысла.

По регуляркам - приложите точный пример того, что используете. Так, по примеру всё правильно, но явно там есть еще какие то условия.
Так по отдельности работает
(?<=Word\ letter:\ <strong>).*?(?=</strong>)
(?<=Word\ letter\ <strong>).*?(?=</strong>)

а так вместе нет
(?<=Word\ letter:\ <strong>).*?(?=</strong>|?<=Word\ letter\ <strong>).*?(?=</strong>)
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113
Так по отдельности работает
(?<=Word\ letter:\ <strong>).*?(?=</strong>)
(?<=Word\ letter\ <strong>).*?(?=</strong>)

а так вместе нет
(?<=Word\ letter:\ <strong>).*?(?=</strong>|?<=Word\ letter\ <strong>).*?(?=</strong>)
Ну так понятное дело, что не будет работать. Вы не полностью скопировали второе выражение.
А вообще, тут проще так прописать

Код:
(?<=Word\ letter:*\ <strong>).*?(?=</strong>)
 
  • Спасибо
Реакции: panehsi

panehsi

Client
Регистрация
21.07.2012
Сообщения
6
Благодарностей
1
Баллы
3
Код:
(?<=Word\ letter:*\ <strong>).*?(?=</strong>)
Все работает, благодарю!
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)