C#-এ Char.ToLowerInvariant() মেথডটি একটি ইউনিকোড ক্যারেক্টারকে ইনভারিয়ান্ট কালচার (Invariant Culture) এর কেসিং নিয়ম অনুযায়ী লোয়ারকেসে রূপান্তর করে। এটি বর্তমান সিস্টেম কালচার (CurrentCulture) উপেক্ষা করে, তাই সব পরিবেশে একই ফলাফল দেয়।
সিনট্যাক্স (Syntax)
public static char ToLowerInvariant(char c);
উদাহরণ ১: বড় হাতের অক্ষর
using System;
public class Demo
{
public static void Main()
{
char ch = 'D';
char res = Char.ToLowerInvariant(ch);
Console.WriteLine("Value = " + ch);
Console.WriteLine("Lowercase Equivalent = " + res);
}
}
আউটপুট
Value = D Lowercase Equivalent = d
উদাহরণ ২: ইতিমধ্যে ছোট হাতের অক্ষর
using System;
public class Demo
{
public static void Main()
{
char ch = 'p';
char res = Char.ToLowerInvariant(ch);
Console.WriteLine("Value = " + ch);
Console.WriteLine("Lowercase Equivalent = " + res);
}
}
আউটপুট
Value = p Lowercase Equivalent = p
ToLower() vs ToLowerInvariant() - গুরুত্বপূর্ণ পার্থক্য
| ফিচার | Char.ToLower() | Char.ToLowerInvariant() |
|---|---|---|
| কালচার وابস্থা | CurrentCulture (সিস্টেম/থ্রেড) | InvariantCulture (নিরপেক্ষ) |
| টর্কিশ 'I' সমস্যা | হ্যাঁ (I → ı) | না (I → i) |
| পারফরম্যান্স | थোড়া স্লো (কালচার লুকআপ) | দ্রুত (ক্যাশড টেবিল) |
| কনসিস্টেন্সি | পরিবেশানুসারী ভিন্ন | সব পরিবেশে একই |
টর্কিশ 'I' সমস্যা প্রদর্শন
using System;
using System.Globalization;
public class TurkishIssue
{
public static void Main()
{
char capitalI = 'I'; // U+0049
// Turkish culture (tr-TR)
CultureInfo turkish = new CultureInfo("tr-TR");
char turkishLower = char.ToLower(capitalI, turkish); // 'ı' (U+0131) - dotless
// Invariant culture
char invariantLower = char.ToLowerInvariant(capitalI); // 'i' (U+0069) - dotted
Console.WriteLine($"Original: {capitalI} (U+{(int)capitalI:X4})");
Console.WriteLine($"ToLower(tr-TR): {turkishLower} (U+{(int)turkishLower:X4})");
Console.WriteLine($"ToLowerInvariant: {invariantLower} (U+{(int)invariantLower:X4})");
// ফাইল পাথ, XML ট্যাগ, প্রোগ্রামিং আইডেন্টিফায়ারে Invariant ব্যবহার করুন
string xmlTag = "";
string lowerInvariant = xmlTag.ToLowerInvariant(); // "" - নিরাপদ
string lowerTurkish = xmlTag.ToLower(turkish); // "" - কিন্তু 'I' থাকলে সমস্যা
}
}
অন্যান্য কেসিং মেথডসমূহ
| মেথড | বর্ণনা | ইনভারিয়ান্ট ভার্সন |
|---|---|---|
ToLower() | লোয়ারকেস (CurrentCulture) | ToLowerInvariant() |
ToUpper() | আপারকেস (CurrentCulture) | ToUpperInvariant() |
ToLower(CultureInfo) | লোয়ারকেস (নির্দিষ্ট কালচার) | - |
ToUpper(CultureInfo) | আপারকেস (নির্দিষ্ট কালচার) | - |
কখন Invariant ব্যবহার করবেন?
- ফাইল পাথ, রেজিস্ট্রি কি, এনভায়রনমেন্ট ভেরিয়েবল - OS-নিরপেক্ষ
- XML/JSON ট্যাগ, এট্রিবিউট নাম - স্পেসিফিকেশন-নিরপেক্ষ
- প্রোগ্রামিং আইডেন্টিফায়ার, কোড জেনারেশন - ভাষা-নিরপেক্ষ
- প্রোটোকল হেডার, HTTP মেথড - RFC-নিরপেক্ষ
- ইন্টারনাল লজিক, ক্যাশ কি, ডিকশনারি কি - কনসিস্টেন্সি জরুরি
কখন CurrentCulture ব্যবহার করবেন?
- ইউজার-ফেসিং টেক্সট দেখানো - ইউজারের ভাষা অনুযায়ী
- লোকালাইজড স্ট্রিং কম্পারিজন - সোর্টিং, সার্চিং
- রিপোর্ট, ডকুমেন্ট জেনারেশন - ইউজারের লোকেল অনুযায়ী
সেরা অনুশীলন: ইন্টারনাল প্রসেসিং-এ সবসময় ToLowerInvariant() / ToUpperInvariant() ব্যবহার করুন। শুধু ইউজার ইন্টারফেসে ToLower() / ToUpper() ব্যবহার করুন।