String 子串的相对位置
我必须为要搜索的段落中的文本编写VBScript,并从最后一个位置找出文本的位置 假设,如果句子是:String 子串的相对位置,string,vbscript,String,Vbscript,我必须为要搜索的段落中的文本编写VBScript,并从最后一个位置找出文本的位置 假设,如果句子是: 这是我的第一段,也是我的第一次尝试 我必须找出我的位置,第一个位置是9,第二个位置是32。但不是打印32,而是打印9的下一个位置。当我执行这段代码时,我得到结果9和32 Dim X,i For i=1 to 10 X=Instr(i, "This is my first paragraph and my first try", "my", 1) i=X+1 msgbox i
这是我的第一段,也是我的第一次尝试
我必须找出我的位置,第一个位置是9,第二个位置是32。但不是打印32,而是打印9的下一个位置。当我执行这段代码时,我得到结果9和32
Dim X,i
For i=1 to 10
X=Instr(i, "This is my first paragraph and my first try", "my", 1)
i=X+1
msgbox i
Next
这里的问题是
For
间隔循环!我必须根据要搜索的文本调整For
循环。可以用一个固定的时间间隔来完成吗?这将打印值9和32,但我需要将后一个值打印为23。这里有几个选项
Do While
循环:
Const SOME_TEXT = "This is my first paragraph and my first try"
Dim intPos, intLast
intPos = InStr(1, SOME_TEXT, "my")
Do While intPos > 0
WScript.Echo intPos - intLast
intLast = intPos
intPos = InStr(intPos + 1, SOME_TEXT, "my")
Loop
Match
对象的FirstIndex
属性:
Dim re
Set re = New RegExp
re.Pattern = "\bmy\b"
re.Global = True
Dim m, i
Set m = re.Execute("This is my first paragraph and my first try")
For i = 0 To m.Count - 1
If i = 0 Then MsgBox m(i).FirstIndex + 1 Else MsgBox m(i).FirstIndex - m(i-1).FirstIndex
Next
为什么不添加一个具有恒定间隔的if条件呢?或者您正在尝试寻找性能答案?这只是一个示例。如果我必须找到文本的所有位置,则需要相应地调整for循环。
for
循环不是查找未知数量的子字符串的正确工具。考虑使用不同的循环类型。两次发生之间的距离可以计算为当前位置和上一个位置之间的差值。@AnsgarWiechers您建议什么不同的循环类型以及原因?@DrasticdreamerDrasticity you。@Bond:谢谢您的选择。第一个很简单,对我来说很有用。再次感谢你。