[英]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.