2017-01-27 91 views
-3

正则表达式我尝试测试带开关的情况下的特定字符串,我发现这个代码:JS:在开关的情况下

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; 
} 

它的工作原理,但它不解决我的问题。例如,我想具体获取字符串“date”。之前什么都没有,之后什么都没有

我这个例子,我想我的控制台显示“Nada”。

我不知道如何用这段代码做到这一点。 解决方案? :)

+5

为什么使用正则表达式,如果你想平等?只需使用'prop =='date“' – MTCoster

+0

这只是一个例子。我不想测试这个字符串是正确的,而是一个包含很多其他字符串的集合。 –

回答

1

您需要用启动和正则表达式

/^date$/ 

或一个简单的测试用绳子和平等

prop === 'date' 

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

谢谢!这正是我的解决方案! :D –

1

为了什么目的迹象你有一个开关不是你的第一选择 - 你也只是比较字符串的平等 - 所以更容易w AY会是以下

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

0

为了测试平等多个字符串,要么堆case语句是这样的:

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

或测试包含在一个静态数组:

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

虽然接通true可能不是实现此目的最有效的方法。

+0

你可以打开'prop'变量。这是我猜测的正确方法。 –