2017-01-27 32 views
-3

Ich versuche, eine bestimmte Zeichenfolge mit einem Schaltergehäuse zu testen und ich finde diesen Code:JS: Regulärer Ausdruck in Schaltergehäuse

let prop = "date myData"; 
switch (true) { 
      case /str/.test(prop) : 
      console.log("tata"); 
      break; 

      case /date/.test(prop): 
      console.log("toto"); 
      break; 

      case /enum/.test(prop) : 
      console.log("titi"); 
      break 
      default : 
      console.log("Nada"); 
      break; 
} 

es funktioniert, aber es ist mein Problem nicht beheben. Ich möchte zum Beispiel speziell den String "date" bekommen. Mit nichts vorher und nichts danach.

In diesem Beispiel möchte ich, dass meine Konsole "Nada" anzeigt.

Ich weiß nicht, wie man das mit diesem Code macht. Eine Lösung? :)

+5

Warum Regex verwenden, wenn Sie Gleichheit wollen? Verwenden Sie einfach "prop ==" date "' für diesen Fall – MTCoster

+0

Es ist nur ein Beispiel. Ich möchte diese Saite nicht juste sondern eine Sammlung mit vielen anderen Saiten. –

Antwort

1

Sie müssen entweder Start- und End-Zeichen in dem regulären Ausdruck

/^date$/ 

oder einen einfachen Test mit einer Schnur und Gleichheit

prop === 'date' 

oder

switch (prop) { 
    case 'date': 
     console.log('date'); 
     break; 
} 
+0

Danke! Es ist genau meine Lösung! : D –

1

Für das, was Du hast dort einen Schalter, ist nicht deine erste Wahl - auch du vergleichst nur Strings für Gleichheit - also ein einfacheres w ay wäre die folgende

let prop = "date myData"; 
 
let strings = {str: "tata", date: "toto", enum:"titi"} 
 
let res = strings[prop] || "Nada"; 
 
console.log(res);

0

für die Gleichstellung auf mehrere Strings zu testen, entweder Stapelgehäuse Aussagen wie folgt aus:

switch (true) { 
    case prop === "date": 
    case prop === "param2": 
    // Do something 
    break; 
} 

Oder Test für die Aufnahme in einem statischen Array:

switch (true) { 
    case ["date", "param2"].includes(prop): 
    // Do something 
    break; 
} 

Obwohl Einschalten true ist wahrscheinlich nicht der effizienteste Weg, dies zu tun.

+0

Sie könnten die Variable 'prop' einschalten. Das ist der richtige Weg, denke ich. –