我正在编写一个字符串替换函数来替换实际图像位置的微笑,但由于所有嵌套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
答案 0 :(得分:4)
改为使用词典。
在课程级别创建如下字典:
Dim dictionary As New Dictionary(Of String, String)
dictionary.Add(":)", GetSmiliePath("smile.gif"))
dictionary.Add(":p", GetSmiliePath("tongue.gif"))
...
在exchangeSmilies函数中,您可以遍历此字典以替换所有出现的内容:
...
For Each pair In dictionary
If ChangedString.Contains(pair.Key) Then
ChangedString = ChangedString.Replace(pair.Key, pair.Value)
End If
Next
Return ChangedString
答案 1 :(得分:3)
拥有包含每个表情符号和替换品的Dictionary(Of String, String)
。使用循环进行实际替换。
答案 2 :(得分:0)
我很长时间没有做过vb.net,所以我无法给你准确的代码。但基本思路是这样的:制作一个包含符号键(“:)”)和文件名值(“smile.gif”)的地图。使其成为静态成员变量。然后迭代地图并执行if(string包含map.key),然后用f(map.value)替换string中的map.key。