在我的项目中,我有一个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。
答案 0 :(得分:4)
1)不要在foreach中调用builder.ToString(),它会每次都重建字符串,这会破坏StringBuilder的性能目的。
2)不要使用StringBuilder,使用List来存储你想要匹配的单词,如果每个选中的值可能包含多个单词,则拆分它们:
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);
答案 1 :(得分:0)
你可以use regexes。
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:
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");
}
答案 2 :(得分:0)
你应该使用String.Contains方法,这是最简单的方法!它返回一个值,指示指定的String对象是否出现在此字符串中。
@Shaks有权。