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