بررسی حساسیت به حروف بزرگ و کوچک در متد Contains در سی شارپ

mohsen1 سال قبل
ارسال شده در
csharp

متد Contains برای رشته ها در دات نت با ورژن های قدیمی تر از .net core 2 و .net 5 به طور پیش‌فرض حساس به حروف بزرگ و کوچک است، برای همین این متد بدون در نظر گرفتن کوچکی یا بزرگی حروف کار نمی کند.

یک راه برای پیاده کردن روش مشابه، استفاده از متد IndexOf است. با استفاده از این متد و پارامتر StringComparison.OrdinalIgnoreCase می‌توانید بررسی کنید که آیا یک رشته (مثلاً "string") در یک رشته دیگر (مثلاً "ASTRINGTOTEST") وجود دارد یا نه:

      string title = "ASTRINGTOTEST";
bool contains = title.IndexOf("string", StringComparison.OrdinalIgnoreCase) >= 0;

    

اگر بخواهید کد خود را قابل استفاده‌تر کنید، می‌توانید یک متد اکستنشن برای رشته‌ها تعریف کنید تا امکان استفاده از روشی مشابه Contains را به شما بدهد:

      public static class StringExtensions
{
    public static bool Contains(this string source, string toCheck, StringComparison comp)
    {
        return source?.IndexOf(toCheck, comp) >= 0;
    }
}

// استفاده:
string title = "ASTRINGTOTEST";
bool contains = title.Contains("string", StringComparison.OrdinalIgnoreCase);

    

برای کار با متون با حساسیت فرهنگی، می‌توانید از CultureInfo استفاده کنید. به عنوان مثال:

      var culture = CultureInfo.CurrentCulture;
bool contains = culture.CompareInfo.IndexOf(paragraph, word, CompareOptions.IgnoreCase) >= 0;

    
رای
0
ارسال نظر
مرتب سازی:
اولین نفری باشید که نظر می دهید!