我有一个字符串和一个数组,我想检查字符串并查找字符串是否包含数组中的任何字符串。
我的数组最多包含10个元素
string[] stringArray = { "apple", "banana", "orange" };
string text="I want an apple";
public static string getItem(string text)
{
//check text for stringArray items
//return item (apple, banana, orange)
}
string item = getItem(text);
所以我正在寻找的是创建一个从中返回项目的方法。此外,我想知道是否有任何替代方法可以使用Enum或List<&gt ;.
最后我做了这样的方法
public static string getItem(string text)
{
string[] stringArray = { "Apple", "Banana", "Orange" };
string item = stringArray.Where(s => text.ToUpper().Contains(s)).DefaultIfEmpty("None").FirstOrDefault();;
return item;
}
答案 0 :(得分:6)
只需要一点LINQ-iness,这很简单:
return stringArray.Where(s => text.Contains(s)).FirstOrDefault();
这假设您只想返回第一个匹配的字符串,并且您希望进行区分大小写的比较。如果没有,可以相对容易地进行微小的修改以改变事物。
如果您的源代码也是List<string>
,那么上面的代码也会同样有效(实际上,任何实现IEnumerable<string>
的代码都可以在其位置上运行)。另一方面,Enum
并不适合这种事情。
答案 1 :(得分:1)
您可以将其设为List<string>
,而不是您的数组。然后在getItem()
中,您可以执行以下操作:
List<string> stringList; // populate how you see fit
string text="I want an apple";
public static string getItem(string text)
{
foreach(var s in stringList)
{
if(text.Contains(s))
{
// do stuff here
}
}
}
List<>
循环不需要foreach
。这很好。