如果其内容包含我的搜索词,如何在字符串数组中查找元素
How to find the element in an string array if its content contains my search term
我的字符串数组是这样的:
string[] headers = {"Row Nr", "StartDate", "StartTime", "Q_1", "Q_96"};
如何在数组中找到包含我的搜索词“日期”的元素?
我知道如何找到其值等于我的搜索词的元素,如下所示:
var match = headers.FirstOrDefault(stringToCheck => stringToCheck.Contains("StartDate"));
但是,当我的 IgnoreCase 元素的一部分包含搜索项时,我没有找到任何解决方案来找到我的元素,即在这种情况下搜索“date”而不是“StartDate”。
只需为 Contains
方法使用另一个重载:
var match = headers.FirstOrDefault(c => c.Contains("date", StringComparison.OrdinalIgnoreCase));
此重载 Contains(String value, StringComparison comparisonType) 未包含在 netstandard2.0 中。
这是一个替代方案:
string[] headers = { "Row Nr", "StartDate", "StartTime", "Q_1", "Q_96" };
var match = headers.FirstOrDefault(c => !string.IsNullOrEmpty(c) && c.IndexOf("date", StringComparison.OrdinalIgnoreCase) >= 0);
我找到了解决这个问题的方法如下:
private void setDateColumnTitle ()
{
string stringToCheck = "date";
int stringToCheckIndex = -1;
string elementInArray = "Not Defined or Not Found";
if (Array.Exists<string> (headers, (Predicate<string>) delegate (string s)
{
stringToCheckIndex = s.IndexOf (stringToCheck, StringComparison.OrdinalIgnoreCase);
elementInArray = s;
return stringToCheckIndex > -1;
}))
{
dateColTitle.Text = elementInArray; //a textbox to show the output
}
}
但是,我发现@Lev 的回答更简单、更短,给出的结果相同,如下所示:
private void setDateColumnTitle ()
{
dateColTitle.Text = "Not Defined or Not Found";
var match = headers.FirstOrDefault(c => c.IndexOf("date", StringComparison.OrdinalIgnoreCase) > -1);
if (match!=null)
dateColTitle.Text = match;
}
所以,它值得被选为这个问题的答案。
我的字符串数组是这样的:
string[] headers = {"Row Nr", "StartDate", "StartTime", "Q_1", "Q_96"};
如何在数组中找到包含我的搜索词“日期”的元素?
我知道如何找到其值等于我的搜索词的元素,如下所示:
var match = headers.FirstOrDefault(stringToCheck => stringToCheck.Contains("StartDate"));
但是,当我的 IgnoreCase 元素的一部分包含搜索项时,我没有找到任何解决方案来找到我的元素,即在这种情况下搜索“date”而不是“StartDate”。
只需为 Contains
方法使用另一个重载:
var match = headers.FirstOrDefault(c => c.Contains("date", StringComparison.OrdinalIgnoreCase));
此重载 Contains(String value, StringComparison comparisonType) 未包含在 netstandard2.0 中。
这是一个替代方案:
string[] headers = { "Row Nr", "StartDate", "StartTime", "Q_1", "Q_96" };
var match = headers.FirstOrDefault(c => !string.IsNullOrEmpty(c) && c.IndexOf("date", StringComparison.OrdinalIgnoreCase) >= 0);
我找到了解决这个问题的方法如下:
private void setDateColumnTitle ()
{
string stringToCheck = "date";
int stringToCheckIndex = -1;
string elementInArray = "Not Defined or Not Found";
if (Array.Exists<string> (headers, (Predicate<string>) delegate (string s)
{
stringToCheckIndex = s.IndexOf (stringToCheck, StringComparison.OrdinalIgnoreCase);
elementInArray = s;
return stringToCheckIndex > -1;
}))
{
dateColTitle.Text = elementInArray; //a textbox to show the output
}
}
但是,我发现@Lev 的回答更简单、更短,给出的结果相同,如下所示:
private void setDateColumnTitle ()
{
dateColTitle.Text = "Not Defined or Not Found";
var match = headers.FirstOrDefault(c => c.IndexOf("date", StringComparison.OrdinalIgnoreCase) > -1);
if (match!=null)
dateColTitle.Text = match;
}
所以,它值得被选为这个问题的答案。