[英]How to use switch case with String.Contains?
我想在下面的代码中使用switch
case
。 这可能吗?如果可以,怎么做?
private IEnumerable<string> GetRowValues(DataRow dr)
{
foreach (DataColumn col in DataResult.Columns)
yield return replaceSpecialChar(dr[col].ToString());
}
private string replaceSpecialChar(string text)
{
if (text.Contains("<"))
{
text = text.Replace("<", "<");
}
else if (text.Contains(">"))
{
text = text.Replace(">", ">");
}
else if (text.Contains("<=")){
text = text.Replace("<=", "≤");
}
else if (text.Contains(">="))
{
text = text.Replace(">=","≥");
}
return text;
}
快速的答案是,你不能使用switch
来做你想做的事,你也不应该尝试。 在当前形式中,如果您的字符串包含多个符号,则只有它匹配的第一个将被替换。
您还需要注意执行这些操作的顺序,因为<=
最终会成为<=
。 您还缺少"<"
和">"
的尾随分号
您应该做的只是将多个调用链接到.Replace()
private string replaceSpecialChar(string text)
{
return text
.Replace("<=", "≤")
.Replace(">=", "≥")
.Replace("<", "<")
.Replace(">", ">");
}
正如一些人已经说过的那样:您不能将其更改为开关,因为您不能对案例使用函数,但较新的 C# 版本的一些简单条件除外。
除此之外,您的代码看起来像您想用 html 代码替换替换所有给定的特殊字符。 您的代码目前仅替换符合您的一个条件的第一个特殊字符,而不是全部。
如果您想用 html 代码替换所有给定字符,则不需要 if/else if 部件。 只需使用它:
return text.Replace("<=", "≤")
.Replace(">=", "≥")
.Replace("<", "<")
.Replace(">", ">");
*编辑似乎 phuzi 更快,并且还提到了替换角色的顺序;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.