2013-03-27 2 views
0

Я пишу некоторые условия для выполнения различных задач. Например, если строка равна Случай 1, «/ Животноводство», затем напечатайте «задача одна». Случай 2, «/ Ливасток /» + что-то еще в конце, затем напечатайте «задание два». В противном случае напечатайте «задание три». Похоже, мы используем .test(), чтобы проверить регулярное выражение, но как поместить его в оператор switch?Как проверить, содержит ли строка что-то в конце

+3

использовать if/else if/else вместо этого ... – Lucas

+1

Регулярные выражения и операторы switch действительно не работают вместе. – Daedalus

ответ

0

$ обозначает конец строки (или конец строки, если вы используете определенный переключатель в RegEx).

var ends_w_livestock = /\/Livestock\/?$/, 
    continues_after_livestock = /\/Livestock\/[^?#]+/; 

Теперь первый один позволяет испытывать URL, которые заканчиваются на «/ Животноводство» или «/ Животноводство /».
Вторая позволяет тестировать URL-адреса, содержащие «/ Животноводство /», но после этого, по крайней мере, еще один символ, это не «?» или "#".

Затем вы будете тестировать каждый, используя или, если хотите, тройное назначение или что бы вы ни делали.

+0

Работал как чемпион. Thx кучи. – Alex

1

Вы не ясно описали свой вопрос. Таким образом, я предполагаю, что ваша строка (var str) в

case1: "task one", str=="Livestock" 
case2: "task two", str starts with "Livestock" and there are something after it. 
case3: "task three", not in above two cases 

, то вы можете:

var flag=str=="Livestock"?1:str.search(/^Livestock/)==0?2:3; 

теперь флаг имеет 1, or 2 or 3 так, чтобы вы могли проверить его в переключатель заявлении.

Если я неправильно понял ваш вопрос, пожалуйста, оставьте комментарий, посмотрите, могу ли я исправить ответ.

+0

Да, вот что я имел в виду. Я получил его с помощью инструкции if. Большое спасибо. – Alex

+0

Для второй части, /^Livestock/.test(str) немного быстрее/дешевле. –

Смежные вопросы