我正在写一个字符串替换函数来取代实际图像位置的微笑,但代码会因为所有嵌套的ifs而变得非常大和凌乱,但我不能想到更有效的方法编写代码。代码浓缩/效率
Public Function exchangeSmilies(ByVal postString As String) As String
Dim ChangedString = postString
ChangedString.ToLower()
If ChangedString.Contains(":)") Then
ChangedString = ChangedString.Replace(":)", GetSmilieMapPath("smile.gif"))
If ChangedString.Contains(":p") Then
ChangedString = ChangedString.Replace(":p", GetSmilieMapPath("toungue.gif"))
If ChangedString.Contains(";)") Then
ChangedString = ChangedString.Replace(";)", GetSmilieMapPath("wink.gif"))
If ChangedString.Contains("<3") Then
ChangedString = ChangedString.Replace("<3", GetSmilieMapPath("heart.gif"))
End If
End If
End If
End If
Return ChangedString
End Function
Public Function GetSmilieMapPath(ByVal SmilieImage As String) As String
GetSmilieMapPath = "<img src=" & Chr(34) & "../Images/Smilies/" & SmilieImage & Chr(34) & ">"
Return GetSmilieMapPath
End Function
你的代码写的没有按”不要做你想做的事。如果一个字符串包含'<3'而不是':',你的代码将不会做任何替换。首先取消所有这些嵌套。然后,如果它仍然看起来很混乱,请尝试其他答案建议的字典方法。 – 2011-06-02 14:25:01
在调用String.Replace之前,您不需要执行String.Contains。 – 2011-06-02 14:29:45
+1,我也需要类似的解决方案 – user774411 2011-06-02 20:43:13