在字符串中查找字符串的第一个实例

时间:2013-05-08 07:25:13

标签: vb.net pseudocode

我有以下似乎有效的功能。这是设计代码:

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 的位置。
这是一种有效的方法吗? 它容易破裂吗? 有更好的解决方案吗?

3 个答案:

答案 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)