繁体   English   中英

如何在switch语句中使用通配符?

[英]How can I use wildcards in a switch statement?

我有一个使用3个字母的字符串的switch语句。 对于很多情况(但不是全部)我只想关注前2个字母。

例如,我希望每个以“FF”开头的代码都处理相同:

switch(code)
{
   case "FF(?)":
      // Handle it
      break;
   default:
      break;
}

我能在这做什么? 我可以使用通配符吗? 我是否必须考虑每个FF代码?

出于显而易见的原因,我不希望有这样的代码,这可能会变得非常大:

case "FFA":
case "FFB":
case "FFD":
    // Handle it

switch做你的前2个字符,而不是case

使用default情况然后回退到三个字母的情况。 它不是最干净的,但它会起作用。 有时,如果交换机没有切断它, if语句是可行的。

switch(code.Substring(0, 2))
{
    case "FF":
       ...
    default:
        switch(code)
        {
            case "ABC":
                ....
        }
}

if then else用于这些类型的比较。 为易于识别为离散值的case保留您的switch case语句。

只需在switch语句中使用三元运算符

 switch (code.StartsWith("FF")? code.substring(0,2): code)
 {
     case "FF":

     case "FAS":

     case "FAY"

     // etc.
 } 

对于倍数,请执行以下操作:

 switch (new[] {"FF", "GG", "HH", "JJ"}.Contains(code.substring(0,2))?
                    code.substring(0,2): code)
 {
     case "FF":
     case "GG":
     case "HH":
     case "JJ":

     case "FAS":

     case "FAY"

     // etc.
 } 

C#中的Switch语句不支持此功能。 您需要使用if / else语句:

if (code.StartsWith("FF"))
{
    // Handle it
}
else if (code == "HFD") // etc
{
    // Handle it
}
else 
{
    // default case
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM