我有以下似乎有效的功能。这是设计代码:
Method findFirst(word As String) As Integer
foundPosition As integer
Set foundPosition To -1
wordLen As integer
Set wordLen To len(word)
startingPoint As integer
Set startingPoint To (len(Text)- 1) - wordLen
For iPosition As integer From startingPoint To 0 Step -1
If substring(iPosition, wordLen) = word Then
foundPosition = iPosition
End If
Next iPosition
Return foundPosition
End Method
在VB.NET
中实施我有以下内容:
Public Function findFirst(word As String) As Integer
Dim foundPosition As Integer = -1
Dim wordLen As Integer = word.Length
Dim startingPoint As Integer = (fText.Length - 1) - wordLen
For iPosition As Integer = startingPoint To 0 Step -1
If fText.Substring(iPosition, wordLen) = word Then
foundPosition = iPosition
End If
Next iPosition
Return foundPosition
End Function
它返回 fText 字段中参数 word 的位置。
这是一种有效的方法吗?
它容易破裂吗?
有更好的解决方案吗?
答案 0 :(得分:3)
您可能只想使用内置字符串方法IndexOf
答案 1 :(得分:2)
这是一种有效的方法吗?
是的,它是一个有效的approuch,但它不是完成任务的可行方法。顺便说一句,这种approuch肯定会改善你的logical skills
。
有更好的解决方案吗?
内置的function
名为IndexOf可用于简单地完成您的任务。如果index
中的特定文本可用,它将返回string
的{{1}}。否则它只会返回-1
其他信息:
即使你从字符串fText的末尾开始搜索单词,你的代码也将返回它首次出现的索引。而不是这样做你可以从头开始循环,就像下面给出的代码一样。顺便说一句你应该使用Exit For
/ Return
来打破for循环中匹配if语句末尾的for循环。
For iPosition As Integer = 0 To len(Text)
If fText.Substring(iPosition, wordLen) = word Then
Return iPosition
End If
Next iPosition
Return -1
答案 2 :(得分:1)
在.NET中有一个已经实现的功能,试试这个:
Dim index As Integer = fText.IndexOf(word)
如果你想要最后一次亮相:
index = fText.LastIndexOf(word)