【发布时间】:2018-10-18 00:25:53
【问题描述】:
我有一个关于以下代码的堆栈溢出问题:
For Each DeltaCharB As Char In DeltaString
If DeltaCharB = "[" Then
Dim DeltaIndexB As Integer = TB8.IndexOf("[B|")
Dim DeltaStringB As String = TB8.Substring(DeltaIndexB + 3, TB8.IndexOf("]", DeltaIndexB + 1) - DeltaIndexB - 3)
MsgBox(DeltaStringB)
Else
'Do nothing
End If
Next
产生的问题是,如果代码运行 X 次后发现字符“[”,则字符串在消息框中显示相同 X 次。
但是我只想让它处理 1X。我尝试更改以下行,但正如我预期的那样,一次只允许一个字符。
If DeltaCharB = "[B|" Then
通常用于搜索的字符串如下:
{[A|Text belonging to entry A][B|Text belonging to entry B][C|Text belonging to entry C]}.... ect...ect
有人知道如何解决这个问题吗?
【问题讨论】:
-
发布代码 sn-ps 时请考虑可读性。缩进比需要缩进六倍的代码无缘无故地降低了可读性。如果选择代码并单击 CODE 按钮六次太麻烦,请在选择代码时使用
Alt,以便选择任意块。 -
我不太确定你在问什么。如果您的意思是要在找到匹配项后退出循环,那么这正是您应该做的。至于确定从当前索引开始的子字符串,您必须知道当前索引是什么,如果您使用的是
For Each循环,则不知道。使用For循环,然后您可以调用Substring来测试多个字符。 -
旁注:“
Else 'Do nothing”。那又何苦呢?删除Else... -
Exit For在MsgBox之后怎么样?
标签: vb.net foreach substring indexof