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

フィールドfText内のパラメータwordの位置を返します。 これは有効なアプローチですか? 壊れやすいですか? より良い解決策はありますか?


4

3 に答える 3

2

これは有効なアプローチですか?

はい、それは有効なアプローチですが、タスクを達成するための実行可能な方法ではありません。ちなみに、この種のアプローチは確実にあなたの成績を向上させますlogical skills

より良い解決策はありますか?

IndexOffunctionと呼ばれるビルトインを使用して、タスクを簡単に達成できます。利用可能な場合、特定のテキストのを返します。それ以外の場合は、単に返されますindexstring-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 に答える