在C#中比較源字符串是否包含目標字符串,我們可以使用以下方法:
source.Contains(target)
source.IndexOf(target) >= 0;
相對而言 Contains 方法更符合直覺,因為它直接返回了一個布爾值,但當我們的對於需要忽略大小寫時只能使用 IndexOf 支持 StringComparison 參數的重載方法,但是這個方法可能不夠符合語義(返回值可能是-1,0,或者大於0),雖然這種情況下很多人或許會將源字符串和目標字符串都轉換為大寫或小寫再對比,但這樣未免太低效了,我們可以直接定義一個支持StringComparison參數的擴展方法:
public static bool Contains(this string source, string value, StringComparison comparisonType)
{
return (source.IndexOf(value, comparisonType) >= 0);
}
其實.NET 類庫中的 Contains 方法的也是基於 IndexOf 方法的:
// #mscorlib/system/string.cs
[Pure]
public bool Contains( string value ) {
return ( IndexOf(value, StringComparison.Ordinal) >=0 );
}
