0

私のプロジェクトではStringBuilder、ドロップダウンリストの選択された値を取る があります。

StringBuilder builder = new StringBuilder();
builder.Append(ddl_model.SelectedValue);
builder.Append(ddl_language.SelectedValue);

foreach (string str in list)
{
    if (str.Contains(builder.ToString()))
    {
        lstpdfList.Items.Add(str);
    }
}

1 つの値で動作します。2つ以上の単語が含まれているかどうかを確認できるようにしたいと思います。

PM12_Manual_Rev1_EN のようなファイルがあります。これで PM12 が含まれているかどうかを確認できます。しかし、それらはたくさんあります。そこで、PM12 + EN が含まれているかどうかを確認したいと思います。

4

3 に答える 3

4

1) foreach 内で builder.ToString() を呼び出さないでください。毎回文字列が再構築され、StringBuilder のパフォーマンスの目的が無効になります。

2) StringBuilder を使用しないでください。一致させたい単語を保存するリストを使用します。選択した各値に複数の単語が含まれる場合は、それらを分割します。

var keywords = new List<string>();
keywords.AddRange(ddl_model.SelectedValue.Split(' '));
keywords.AddRange(ddl_language.SelectedValue.Split(' '));

foreach(string str in list)
   if (keywords.Any(keyword => str.Contains(keyword))
      lstpdfList.Items.Add(str);
于 2012-09-05T08:56:39.503 に答える
0

正規表現を使用できます。

    string testString ="PM12_Manual_Rev1_EN";       

    var wordRegex = new Regex( "PM12.*EN", RegexOptions.IgnoreCase );

    if (wordRegex.IsMatch( testString ))
    {
        Console.WriteLine("we've found multiple matches, REGEX edition");       
    }

または、次のようにLinqでContainsを使用できます。

    string testString ="PM12_Manual_Rev1_EN";

    var checkWords = new List<String>() {"PM12", "EN"};
    if(checkWords.All(w => testString.Contains(w)))
    {
        Console.WriteLine("we've found multiple matches");      
    }
于 2012-09-05T08:57:12.200 に答える
0

String.Contains メソッドを使用する必要があります。これが最も簡単な方法です。指定された String オブジェクトがこの文字列内にあるかどうかを示す値を返します。

@Shaksには権利があります。

于 2012-09-05T09:02:21.060 に答える