我在VB中有一个stringbuilder
我想查看它是否包含值,如果是这样我喜欢做某事:
If strMsg.Contains("<table>") Then
' strMsg = strMsg + "<br/><br/><br/>"
strMsg.Append("<br/><br/><br/>")
End If
我尝试了上述内容但是说contains不是System.Text.StringBuilder的成员。
我可以用什么代替包含
答案 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)