检查数组项的字符串并匹配它

时间:2012-12-21 16:34:11

标签: c# arrays string match string-matching

我有一个字符串和一个数组,我想检查字符串并查找字符串是否包含数组中的任何字符串。

我的数组最多包含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;
        }

2 个答案:

答案 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。这很好。