我在 VB 中有一个字符串生成器
我喜欢检查它是否包含一个值,如果我喜欢做某事:
If strMsg.Contains("<table>") Then
' strMsg = strMsg + "<br/><br/><br/>"
strMsg.Append("<br/><br/><br/>")
End If
我尝试了上述方法,但说包含不是 System.Text.StringBuilder 的成员。
我可以用什么代替包含
我在 VB 中有一个字符串生成器
我喜欢检查它是否包含一个值,如果我喜欢做某事:
If strMsg.Contains("<table>") Then
' strMsg = strMsg + "<br/><br/><br/>"
strMsg.Append("<br/><br/><br/>")
End If
我尝试了上述方法,但说包含不是 System.Text.StringBuilder 的成员。
我可以用什么代替包含
我会检查你在StringBuilder
这种情况下的输入。
Dim hasTable As Boolean = False
' Check inputs, set hasTable to True if needed
If hasTable Then
strMsg.Append("<br/><br/><br/>")
End If
Contains()
不在Stringbuilder 的方法中。也就是说,你有几个选择......
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
免责声明:这还没有经过性能测试......迈克尔哈伦的评论是针对该ToString()
选项的。
StringBuilder.ToString
给出的建议监视输入的答案是最好的选择,但是如果您需要在决赛之前 做任何需要访问的事情ToString
- 在这种情况下这是替代方案 - 使用sb.ToString(0, sb.Length)
所以String
肯定会创建一个新的并且正在建造的可以继续(有效地)。
If strMsg.ToString().Contains("<table>") Then
strMsg.Append("<br /><br /><br />")
End If