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 らしさで、これは非常に簡単なためです。

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

これは、最初に一致した文字列のみを返し、大文字と小文字を区別して比較することを前提としています。そうでない場合は、小さな変更を比較的簡単に加えて変更することができます。

上記のコードは、ソースが a の場合も同様に機能List<string>します (実際、実装IEnumerable<string>するものはすべてその場所で機能します)。一方、 は、この種のEnumものには適切ではありません。

于 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
        }
    }
}

ループにはAList<>は必要ありません。foreach持っているだけでいいです。

于 2012-12-21T16:37:48.500 に答える