如何在 String.Contains 中使用 switch case?

-1 c#

我想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("<", "&lt;");
    }
    else if (text.Contains(">"))
    {
        text = text.Replace(">", "&gt;");
    }
    else if (text.Contains("<=")){
        text = text.Replace("<=", "&le;");
    }
    else if (text.Contains(">="))
    {
        text = text.Replace(">=","&ge;");
    }
    return text;
}
Run Code Online (Sandbox Code Playgroud)

phu*_*uzi 5

快速回答是,你不能switch用来做你想做的事,你也不应该尝试。在当前形式中,如果您的字符串包含多个符号,则只有第一个匹配的符号会被替换。

您还需要注意执行这些操作的顺序,因为它们<=最终会是&lt=. 您还缺少结尾的分号"&lt""&gt"

你应该做的只是将多个调用链接到 .Replace()

private string replaceSpecialChar(string text)
{
    return text
        .Replace("<=", "&le;")
        .Replace(">=", "&ge;")
        .Replace("<", "&lt;")
        .Replace(">", "&gt;");
}
Run Code Online (Sandbox Code Playgroud)