将IF语句转换为CASE

Har*_*rry 1 vb.net if-statement

我知道一些原始问题,但我画了一个心理障碍.我希望将此if else转换为CASE声明.我怎样才能做到这一点?

   If (strReplaceCharsInString.Contains("&")) Then
            strResult = strReplaceCharsInString.Replace("&", "&")
        Else
            If (strReplaceCharsInString.Contains("'")) Then
                strResult = strReplaceCharsInString.Replace("'", "'")
            Else
                If (strReplaceCharsInString.Contains(">")) Then
                    strResult = strReplaceCharsInString.Replace(">", ">")
                Else
                    If (strReplaceCharsInString.Contains("<")) Then
                        strResult = strReplaceCharsInString.Replace("<", "&lt;")
                    Else
                        If (strReplaceCharsInString.Contains("""")) Then
                            strResult = strReplaceCharsInString.Replace("""", "&quote;")
                        End If
                    End If
                End If
            End If
        End If
Run Code Online (Sandbox Code Playgroud)

这可以通过Regex实现匹配模式,然后做一个选择案例吗?

Zoh*_*led 5

您不需要if,也不需要案例.Replace方法做的第一件事是检查字符串中是否存在该值.因此,您可以使用以下代码安全地替换您的代码:

strResult = strReplaceCharsInString.Replace("&", "&amp;").Replace("'", "&apos;").Replace(">", "&gt;").Replace("<", "&lt;").Replace("""", "&quote;")
Run Code Online (Sandbox Code Playgroud)

或者如果你想要它在不同的行,你当然可以这样做:

strResult = strReplaceCharsInString.Replace("&", "&amp;")
strResult = strResult.Replace("'", "&apos;")
strResult = strResult.Replace(">", "&gt;")
strResult = strResult.Replace("<", "&lt;")
strResult = strResult.Replace("""", "&quote;")
Run Code Online (Sandbox Code Playgroud)

当然,正如James Thorpe在评论中所建议的那样,最好使用微软提供的HTMLEncode方法进行这些特定的替换.

您应该考虑输入字符串已经是HTML编码的可能性,这意味着它包含类似&amp;和的内容&lt;.这个替换会搞乱你的字符串,因为它将替换&每个子字符串中的字符串&amp;,留下包含类似&amp;amp;&amp;lt;

这是你应该使用HTMLEncode而不是自己更换所有内容的另一个原因.