আপনি switchযদি পুরো স্ট্রিং ম্যাচিং না করেন তবে আপনি এটিতে পারবেন না ; এটা সাবস্ট্রিং ম্যাচিং করছে । (এটি বেশ নয় সত্য নয়, শন মন্তব্যগুলিতে উল্লেখ করেছেন। শেষে নোট দেখুন))
আপনি যদি খুশি হন যে শীর্ষে আপনার রেজেক্স আপনার ম্যাচে যা তুলনা করতে চান না তা সরিয়ে ফেলছে, আপনার কোনও স্ট্রিং ম্যাচের দরকার নেই এবং এটি করতে পারেন:
switch (base_url_string) {
case "xxx.local":
// Blah
break;
case "xxx.dev.yyy.com":
// Blah
break;
}
... তবে আবার, এটি কেবল তখনই কাজ করে যদি আপনার সম্পূর্ণ মিলটি মিলছে। এটি যদি ব্যর্থ হয় তবে base_url_stringবলুন, "yyy.xxx.local" তবে আপনার বর্তমান কোডটি "xxx.local" শাখায় মিলবে।
আপডেট : ঠিক আছে, সুতরাং প্রযুক্তিগতভাবে আপনি সাবস্ট্রিং ম্যাচিংয়ের জন্য একটি ব্যবহার করতে পারেন switch, তবে আমি বেশিরভাগ ক্ষেত্রেই এটির প্রস্তাব দেব না। কীভাবে ( সরাসরি উদাহরণ ) এখানে:
function test(str) {
switch (true) {
case /xyz/.test(str):
display("• Matched 'xyz' test");
break;
case /test/.test(str):
display("• Matched 'test' test");
break;
case /ing/.test(str):
display("• Matched 'ing' test");
break;
default:
display("• Didn't match any test");
break;
}
}
এটি জাভাস্ক্রিপ্টের switchবিবৃতিগুলি যেভাবে কাজ করে , বিশেষত দুটি মূল দিকগুলির কারণে কাজ করে: প্রথমত, কেসগুলি উত্স পাঠ্য ক্রমে বিবেচনা করা হয় এবং দ্বিতীয়টি যে নির্বাচক এক্সপ্রেশনগুলি (কীওয়ার্ডের পরে বিটগুলি case) সেই অভিব্যক্তি যা সেই কেস হিসাবে মূল্যায়ন করা হয় are মূল্যায়ন (অন্য কয়েকটি ভাষার মতো ধ্রুবক নয়)। সুতরাং যেহেতু আমাদের পরীক্ষার এক্সপ্রেশনটি হ'ল true, তার ফলে প্রথম caseপ্রকাশের ফলাফলটি trueব্যবহার হবে।
switch(true) { case /foo/.test(bar): ....