我知道一些原始问题,但我画了一个心理障碍。我希望将此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("<", "<")
Else
If (strReplaceCharsInString.Contains("""")) Then
strResult = strReplaceCharsInString.Replace("""", ""e;")
End If
End If
End If
End If
End If
这可以通过Regex实现匹配模式,然后选择一个案例吗?
答案 0 :(得分:5)
你不需要一个if,也不需要一个案例。 Replace方法做的第一件事是检查字符串中是否存在该值。 因此,您可以使用以下代码安全地替换您的代码:
strResult = strReplaceCharsInString.Replace("&", "&").Replace("'", "'").Replace(">", ">").Replace("<", "<").Replace("""", ""e;")
或者如果你想要它在不同的行中,你当然可以这样做:
strResult = strReplaceCharsInString.Replace("&", "&")
strResult = strResult.Replace("'", "'")
strResult = strResult.Replace(">", ">")
strResult = strResult.Replace("<", "<")
strResult = strResult.Replace("""", ""e;")
当然,正如James Thorpe在评论中所建议的那样,最好使用Microsoft提供的HTMLEncode方法进行这些特定的替换。
您应该考虑输入字符串已经是HTML编码的可能性,这意味着它包含&
和<
之类的内容。然后,此替换会弄乱您的字符串,因为它会将每个子字符串中的&
替换为&
,从而为您添加包含&amp;
和&lt;
之类字符串的字符串
这是你应该使用HTMLEncode而不是自己更换所有内容的另一个原因。