Sie können es nicht in einem switch
, wenn Sie voll zu tun sind Zeichenkettenanpassung; das macht Teilzeichenfolge passend.(Dies ist nicht ganz wahr, wie Sean in den Kommentaren zu bedenken. Anmerkung am Ende sehen.)
Wenn Sie, dass Ihre Regex alles an der Spitze ist Abstreifen glücklich sind, dass Sie don ‚t in Ihrem Spiel vergleichen wollen, müssen Sie nicht eine Teil Spiel brauchen, und tun konnte:
switch (base_url_string) {
case "xxx.local":
// Blah
break;
case "xxx.dev.yyy.com":
// Blah
break;
}
... aber wieder, das funktioniert nur, wenn das der Sie passende komplette Zeichenfolge ist. Es würde fehlschlagen, wenn base_url_string
sagen würde, "yyy.xxx.local", während Ihr aktueller Code dem im "xxx.local" Zweig entsprechen würde.
aktualisieren: Okay, Sie so technisch kann ein switch
für Teilzeichenanpassung verwenden, aber ich würde es nicht in den meisten Fällen empfehlen. Hier ist, wie (live example):
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;
}
}
, dass wegen der Art und Weise funktioniert JavaScript switch
statements work, insbesondere zwei wesentliche Aspekte: Erstens, dass die Fälle, in Quelltext Reihenfolge berücksichtigt werden, und zweitens, dass die Wähler Ausdrücke (die Bits nach dem Schlüsselwort case
) sind Ausdrücke, die ausgewertet werden, wie dieser Fall ausgewertet wird (nicht Konstanten wie in einigen anderen Sprachen). Also, da unser Testausdruck true
ist, wird der erste case
Ausdruck, der in true
resultiert, derjenige sein, der benutzt wird.
Ich weiß, es ist alt, aber das ist nicht ganz richtig - Sie können tatsächlich 'switch (true) {case/foo /.test (bar): ....' –
@Sean: Ugh. Ja, Sie haben recht (lurkers: [Beispiel] (http://jsbin.com/ehabar)), aber gehen Sie nicht dorthin ... ;-) –
@TJCrowder Warum empfehlen Sie nicht, eine Regex zu verwenden in den meisten Situationen? –