Usted no puede hacerlo de una switch
menos que esté haciendo completa coincidencia de cadena; eso está haciendo subcadena correspondiente.(Esto no es bastantecierto, como señala Sean en los comentarios. Ver nota al final.)
Si está satisfecho de que su expresión regular en la parte superior está quitando todo lo que Don 't desea comparar en el partido, que no necesitan una subcadena coincidente, y podrían hacer:
switch (base_url_string) {
case "xxx.local":
// Blah
break;
case "xxx.dev.yyy.com":
// Blah
break;
}
... pero una vez más, que sólo funciona si esa es la secuencia completa que estés a juego. Fallaría si base_url_string
fuera, por ejemplo, "yyy.xxx.local", mientras que su código actual coincidiría con el de la rama "xxx.local".
actualización: Bueno, por lo que técnicamente puede utilizar un switch
para la coincidencia de subcadena, pero yo no lo recomendaría en la mayoría de las situaciones. He aquí cómo (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;
}
}
que funciona debido a la forma JavaScript switch
statements work, en particular dos aspectos fundamentales: En primer lugar, que los casos se consideran en fuente de texto orden, y segundo, que las expresiones de selector (la bits después de la palabra clave case
) son expresiones que se evalúan a medida que se evalúa ese caso (no constantes como en otros idiomas). Entonces, dado que nuestra expresión de prueba es true
, la primera expresión case
que resulte en true
será la que se use.
Sé que es viejo, pero esto no es del todo cierto - en realidad se puede hacer 'cambiar (verdadero) {caso /foo/.test(bar): ....' –
@Sean: Ugh. Sí, tiene toda la razón (lurkers: [ejemplo] (http://jsbin.com/ehabar)), pero no vaya allí; ;-) –
@TJCrowder ¿por qué no recomienda usar una expresión regular? en la mayoría de las situaciones? –