1

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

我的数组最多包含大约 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<> 来做到这一点。

最后我做了这样的方法

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;
        }
4

2 回答 2

6

只需一点 LINQ-iness,这很容易:

return stringArray.Where(s => text.Contains(s)).FirstOrDefault();

这假设您只想返回第一个匹配的字符串并且您想要进行区分大小写的比较。如果不是,则可以相对容易地进行较小的修改以进行更改。

如果你的源代码也是 a ,上面的代码也同样List<string>有效(实际上,任何实现的东西都IEnumerable<string>可以代替它工作)。另一方面, AnEnum不适合这种事情。

于 2012-12-21T16:35:51.087 回答
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<>不需要A。foreach拥有它真是太好了。

于 2012-12-21T16:37:48.500 回答