将IF语句转换为CASE

时间:2015-04-14 10:04:53

标签: 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

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

1 个答案:

答案 0 :(得分:5)

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

strResult = strReplaceCharsInString.Replace("&", "&amp;").Replace("'", "&apos;").Replace(">", "&gt;").Replace("<", "&lt;").Replace("""", "&quote;")

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

strResult = strReplaceCharsInString.Replace("&", "&amp;")
strResult = strResult.Replace("'", "&apos;")
strResult = strResult.Replace(">", "&gt;")
strResult = strResult.Replace("<", "&lt;")
strResult = strResult.Replace("""", "&quote;")

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

您应该考虑输入字符串已经是HTML编码的可能性,这意味着它包含&amp;&lt;之类的内容。然后,此替换会弄乱您的字符串,因为它会将每个子字符串中的&替换为&amp;,从而为您添加包含&amp;amp;&amp;lt;之类字符串的字符串

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