我有一个使用3个字母的字符串的switch语句。对于很多情况(但不是全部)我只想关注前2个字母。
示例,我希望每个以“FF”开头的代码都处理相同:
switch(code)
{
case "FF(?)":
// Handle it
break;
default:
break;
}
我可以在这做什么?我可以使用通配符吗?我是否必须考虑每个FF代码?
出于显而易见的原因,我不想拥有这样的代码,它可能会变得非常大:
case "FFA":
case "FFB":
case "FFD":
// Handle it
答案 0 :(得分:5)
在switch
处,而不是在case
处,前两个字符。
使用default
案例然后再回到三个字母的案例。它不是最干净的,但它会起作用。如果交换机没有切断它,有时会if
语句。
switch(code.Substring(0, 2))
{
case "FF":
...
default:
switch(code)
{
case "ABC":
....
}
}
答案 1 :(得分:5)
使用if then else
进行这些比较。对于易于识别为离散值的案例,请保留switch
case
条款。
答案 2 :(得分:2)
只需在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.
}
答案 3 :(得分:1)
C#中的Switch语句不支持此功能。您需要使用if / else语句:
if (code.StartsWith("FF"))
{
// Handle it
}
else if (code == "HFD") // etc
{
// Handle it
}
else
{
// default case
}