Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

เมธอด String.ToLowerInvariant ใน C#

เมธอด 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()CurrentCultureUI, ข้อความแสดงผู้ใช้ตุรกี: 'I' → 'ı' (dotless i)
ToLower(CultureInfo)ที่ระบุประมวลผลเฉพาะ localeفرانسیส: 'İ' → 'i' (กับ tr-TR)
ToLowerInvariant()InvariantCultureInternal, 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)) { ... }