簡體   English   中英

字符串包含多個單詞

[英]String contains more than one word

在我的項目中,我有一個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);
    }
}

它具有一個值。 我想讓我檢查一下是否包含兩個或多個單詞。

我有一個類似PM12_Manual_Rev1_EN的文件。 現在,我可以找到它是否包含PM12。 但是有很多。 因此,我想檢查一下是否包含PM12 + EN。

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);

您可以使用正則表達式

    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");       
    }

或者,您可以將Contains與Linq一起使用,如下所示:

    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");      
    }

您應該使用String.Contains方法,這是最簡單的方法! 它返回一個值,該值指示指定的String對象是否出現在此字符串中。

@Shaks有權利。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM