0

ファイル名を入力する必要があるテキストボックスがありますが、ファイル名はファイル名全体である必要はありません。

例えば

リストボックスに保存されるiexplorere.exe。次に、「ieexpl」と入力するだけで、結果は完全なファイル名のメッセージボックスに表示されます。

二分探索法で困っています。

これまでの私のコードは次のとおりです。

private void btnSearch_Click(object sender, RoutedEventArgs e)
{


        fValue = bList.BinarySearch(sValue, StringComparison.OrdinalIgnoreCase);
        MessageBox.Show("The Following Files were found \n" + fValue);
    }
    catch (Exception)
    {
        // Alerts the user path file doesnt exist
        MessageBox.Show("The File Doesn't Exist!");
    }

}
4

1 に答える 1

3

BinarySearch部分検索を意味するものではないので、それが最初の問題です。二分探索アルゴリズムを使用して正確な用語を一致させようとしています。

リスト ボックスにすべてのタイプのアイテムが含まれている場合Stringは、代わりにこれを試すことができます。

fValue = bList.Cast<String>()
    .FirstOrDefault(t =>
                    t.StartsWith(sValue, StringComparison.OrdinalIgnoreCase));

これはIEnumerableof 型を取得し、Stringにある値で始まる最初の項目を見つけますsValue

編集: この ASP .NET にタグを付けたので、代わりにこの 1 つのライナーを試すことができます。これにより、上記の最初のアイテムだけでなく、一致するすべてのアイテムのコレクションが取得されます。

var matchingItems = lstbxResults.Items
    .Cast<ListItem>()
    .Where(t => t.Text.StartsWith(sValue));
于 2013-03-08T00:57:50.533 に答える