เมธอด String.ToLowerInvariant() ใน C# ใช้สร้างสำเนาของสตริงที่แปลงเป็นตัวพิมพ์เล็ก (lowercase) ทั้งหมด โดยใช้กฎของ Invariant Culture (วัฒนธรรมมาตรฐานที่ไม่เปลี่ยนแปลง)
ไวยากรณ์ (Syntax)
public string ToLowerInvariant();
ตัวอย่างที่ 1: แปลงสตริงต่างๆ เป็นตัวพิมพ์เล็ก
using System;
using System.Text;
public class Demo
{
public static void Main(string[] args)
{
string str1 = "Pink Floyd";
string str2 = "Ariana";
Console.WriteLine("String 1 = " + str1);
Console.WriteLine("String1 ToLowerInvariant = " + str1.ToLowerInvariant());
Console.WriteLine("String 2 = " + str2);
Console.WriteLine("String2 ToLowerInvariant = " + str2.ToLowerInvariant());
Console.WriteLine("String 1 is equal to String 2: {0}", str1.Equals(str2));
}
}
ผลลัพธ์
String 1 = Pink Floyd String1 ToLowerInvariant = pink floyd String 2 = Ariana String2 ToLowerInvariant = ariana String 1 is equal to String 2: False
ตัวอย่างที่ 2: แปลงสตริงหลายแบบพร้อม ToUpperInvariant
using System;
using System.Text;
public class Demo
{
public static void Main(string[] args)
{
string str1 = "one";
string str2 = "TWO";
string str3 = "ThrEE";
Console.WriteLine("String 1 = " + str1);
Console.WriteLine("String1 ToLowerInvariant = " + str1.ToLowerInvariant());
Console.WriteLine("String 2 = " + str2);
Console.WriteLine("String2 ToLowerInvariant = " + str2.ToLowerInvariant());
Console.WriteLine("String 3 = " + str3);
Console.WriteLine("String3 ToLowerInvariant = " + str3.ToLowerInvariant());
}
}
ผลลัพธ์
String 1 = one String1 ToLowerInvariant = one String 2 = TWO String2 ToLowerInvariant = two String 3 = ThrEE String3 ToLowerInvariant = three
สรุป
ToLowerInvariant()แปลงเป็นตัวพิมพ์เล็กด้วยกฎ Invariant Culture — ผลลัพธ์สม่ำเสมอทุกสภาพแวดล้อม- เหมาะสำหรับ: internal processing, identifiers, protocols, file formats, database keys, case-insensitive comparisons
- ต่างจาก
ToLower()ที่ใช้ CurrentCulture — อาจให้ผลต่างในบางภาษา (เช่น ตุรกี: 'I' → 'ı' ไม่ใช่ 'i') - สตริงเดิมไม่เปลี่ยน (immutable) — คืนสตริงใหม่
- คู่คู่กับ
ToUpperInvariant()
ToLower vs ToLowerInvariant — เลือกใช้อันไหน?
| เมธอด | Culture | เหมาะสำหรับ | ตัวอย่างภาษาที่ต่างออกไป |
|---|---|---|---|
| ToLower() | CurrentCulture | UI, ข้อความแสดงผู้ใช้ | ตุรกี: 'I' → 'ı' (dotless i) |
| ToLower(CultureInfo) | ที่ระบุ | ประมวลผลเฉพาะ locale | فرانسیส: 'İ' → 'i' (กับ tr-TR) |
| ToLowerInvariant() | InvariantCulture | Internal, identifiers, protocols | สม่ำเสมอ: 'I' → 'i', 'Σ' → 'σ' |
แนวทางปฏิบัติที่ดีที่สุด (Best Practice)
// ❌ หลีกเลี่ยงสำหรับ internal logic
if (input.ToLower() == "yes") { ... }
// ✅ ดี - Invariant สม่ำเสมอ
if (input.ToLowerInvariant() == "yes") { ... }
// ✅ ดีที่สุด - StringComparison (ไม่ allocate string ใหม่)
if (string.Equals(input, "yes", StringComparison.OrdinalIgnoreCase)) { ... }