2017-02-16 42 views
-1

是否有標準字符串可以採用多個參數進行精確比較的方法?C#字符串方法在多個參數上精確匹配

T-SQL相當於將IN( '狗', '貓',...)

例如,如果有)稱爲EqualToAny(這樣的方法,則下面的代碼應該返回false

string s="catfish"; 
if (s.EqualToAny("dog", "cat", "human", "dolphin")) 
    return true; 
else 
    return false; 
+0

說明 「部分匹配」 ...如果你使用'ContainsAny',例如,如果字符串只包含「huma」,只有包含「human」,纔會返回true。 –

+0

在你的例子中究竟是什麼? – juharr

+3

_so鮎魚應該是false_沒有什麼意義。提供清晰的輸入和期望的輸出。 –

回答

0

你需要EqualsAny ..

// string extension method 
    public static bool EqualsAny(this string source, params string[] prms) 
    { 
     return prms.Contains(source); 
    } 
+0

,'Contains'也可以工作謝謝,這正是我想要的。我只是希望已經有一種方法來做到這一點。 – userSteve

+0

@userSteve - 我想指出的是,您已經無法參加這個論壇,因爲所有嘗試澄清您的問題都沒有得到您的答覆。考慮到你試圖幫助你的人數完全被忽視,這是非常令人沮喪的。 –

+0

@ rory。ap我同意我原來的問題本可以更好地形成,我很高興有這麼多的答覆如此迅速,但它只是幾分鐘的問題!這不像是過去的日子! – userSteve

1

您可以使用Linq Any()方法實現此目的。

string input = "catfish"; 
var mammals = new [] {"dog", "cat", "human", "dolphin"}; 
var result = mammals.Any(v => v == input); 

resultfalse"catfish"true"cat"

你也可以把這個包成一個擴展方法的字符串:

public static bool EqualsAny(this string str, IEnumerable<string> validStrings) { 
    return validStrings.Any(v => v == str); 
} 

var result = input.EqualsAny(mammals); 

Fiddle

+1

這個問題並不清楚,但實際上可能是OP想要一些更像「哺乳動物。任何(v => input.Contains(v))」的東西,但是似乎有一種願望只有「貓」匹配如果有像「我有貓」這樣的詞語界限,而不是像「我吃鮎魚」這樣的詞。 – juharr

+2

它看起來像OP正在尋找一個字符串對象的方法,而不是集合。 –

+0

現在基於編輯這是正確的,但當然你可以剛剛完成'哺乳動物。包含(輸入)'。 – juharr