-1

これは私のコードです:

public static void ColorListBox(List<string> data, DrawItemEventArgs e, string word)
        {
            int keywords = 0;
            string keyword = null;
            string url = data[e.Index].Substring(0, 5);
            if (data[e.Index].Contains(word))//"Local KeyWord:"))
            {
                keywords = data[e.Index].IndexOf(word);//"Local KeyWord:");
                keyword = data[e.Index].Substring(keywords, word.Length);
            }
            else
            {
                keywords = data[e.Index].IndexOf(word);//"Localy KeyWord:");
                keyword = data[e.Index].Substring(keywords, 15);
            }

この関数を呼び出すときの Form1 の問題:

ColorText.ColorListBox(data, e);

追加するテキストを知るにはどうすればよいですか? ColorText.ColorListBox(data, e, "Local KeyWord");またはColorText.ColorListBox(data, e, "Localy KeyWord");、プログラムを実行しているときはLocaly KeyWordですが、新しいURLを追加するときは「Local KeyWord」です

すべてのオプションをカバーする関数を呼び出すときに Form1 が必要です。変数単語を追加する前に、手動文字列「Local KeyWord」と「Localy Keyword」を使用しましたが、単語として入力する各単語または単語が関数で使用されるようにしたいと思います。

問題は、プログラムを実行しているときに変数データの文字列が「Localy KeyWord:」であり、プログラムの動作中に新しい URL を追加すると、データの文字列が「Local KeyWord:」になることです。

4

1 に答える 1

1

これは単なる大文字と小文字の比較ではなく、実際には異なる単語であるため、これらの違いをできるだけ早く取り除きます。

private const string LocalKeyword = "Local Keyword";
private static readonly Dictionary<string, string> keywords = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
    { "Localy KeyWord:", LocalKeyword },
    { "Localy Keyword", LocalKeyword },
    { "Local Keyword:", LocalKeyword },
    { ... }
}

if (!keywords.TryGetValue(rawKeyword, out realKeyword))
{
    throw new ApplicationException("Unknown keyword or keyword alias!");
}
ColorText.ColorListBox(realKeyword, e)
于 2013-02-18T09:29:28.173 に答える