代码冷凝/效率

时间:2011-06-02 14:10:46

标签: vb.net

我正在编写一个字符串替换函数来替换实际图像位置的微笑,但由于所有嵌套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 个答案:

答案 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。