VB stringbuilder包含

时间:2012-08-06 16:22:42

标签: .net vb.net stringbuilder

我在VB中有一个stringbuilder

我想查看它是否包含值,如果是这样我喜欢做某事:

If strMsg.Contains("<table>") Then
  ' strMsg = strMsg + "<br/><br/><br/>"
  strMsg.Append("<br/><br/><br/>")
End If

我尝试了上述内容但是说contains不是System.Text.StringBuilder的成员。

我可以用什么代替包含

5 个答案:

答案 0 :(得分:4)

对于这种情况,我会检查您对StringBuilder的输入。

Dim hasTable As Boolean = False

' Check inputs, set hasTable to True if needed

If hasTable Then
    strMsg.Append("<br/><br/><br/>")
End If

答案 1 :(得分:2)

Contains()不属于Stringbuilder's methods。那就是说,你有几个选择......

1。:在途中测试您的值并为追加<br>代码状态维护一个布尔标记。

2:执行ToString()并从结果中调用Contains()

if strMsg.ToString().Contains("<table>") then '...

3:自己实施IndexOf()和/或Contains()

Module StringBuilderExtensions

    <Extension()>
    Public Function IndexOf(ByVal sb As StringBuilder, ByVal value As String) As Integer

        For i As Integer = 0 To sb.Length - value.Length - 1

            For y As Integer = 0 To value.Length - 1

                If value(y) <> sb(i + y) Then

                    Exit For

                ElseIf y = value.Length - 1 Then

                    Return i

                End If

            Next

        Next

        Return -1

    End Function

    <Extension()>
    Public Function Contains(ByVal sb As StringBuilder, ByVal value As String) As Boolean

        Return sb.IndexOf(value) > -1

    End Function

End Module

免责声明:尚未针对性能进行测试...... Michael Haren的评论针对的是ToString()选项。

答案 2 :(得分:0)

建议监控输入的答案是最佳选择,但如果您需要在最终 StringBuilder.ToString之前执行需要访问ToString 的任何操作 - 在这种情况下,这是另一种选择 - 使用sb.ToString(0, sb.Length),这样就可以创建一个新的String,并且正在构建的那个可以继续(有效地)。

答案 3 :(得分:0)

If strMsg.ToString().Contains("<table>") Then
    strMsg.Append("<br /><br /><br />")
End If

答案 4 :(得分:0)

您可能也想查看正则表达式。它们允许您搜索大量文本并对其进行操作。这个site有一个很棒的程序来试验它们。

Here也是一个很好的教程。