0

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

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

它返回参数word在字段fText中的位置。
这是一种有效的方法吗?
容易坏吗?
有更好的解决方案吗?

4

3 回答 3

3

您可能只想使用内置的字符串方法IndexOf

于 2013-05-08T07:29:18.807 回答
2

这是一种有效的方法吗?

是的,这是一种有效的方法,但它不是完成任务的可行方法。顺便说一句,这种方法肯定会提高你的logical skills.

有更好的解决方案吗?

function一个名为IndexOf的内置函数可用于简单地完成您的任务。如果它在其中可用,它将返回indexa 中特定文本的。string否则它会简单地返回-1

附加信息:

即使您从字符串 fText 的末尾开始搜索单词,您的代码也会返回其第一次出现的索引。您可以像下面给出的代码一样从头开始循环。顺便说一句,您应该在 for 循环内匹配 if 语句的末尾使用Exit For/Return来中断 for 循环。

For iPosition As Integer = 0 To len(Text)
        If fText.Substring(iPosition, wordLen) = word Then
            Return iPosition
        End If
Next iPosition
Return -1
于 2013-05-08T07:51:21.097 回答
1

在 .NET 中有一个已经实现的功能,试试这个:

Dim index As Integer = fText.IndexOf(word)

如果你想要最后一次出现:

index = fText.LastIndexOf(word)
于 2013-05-08T07:29:33.940 回答