[英]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.