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

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

เมธอด String.ToUpperInvariant() ใน C# ใช้สร้างสำเนาของสตริงที่แปลงเป็นตัวพิมพ์ใหญ่ (uppercase) ทั้งหมด โดยใช้กฎของ Invariant Culture (วัฒนธรรมที่ไม่เปลี่ยนแปลง/มาตรฐาน)

ไวยากรณ์ (Syntax)

public string ToUpperInvariant();

ตัวอย่างที่ 1: แปลงสตริงต่างๆ เป็นตัวพิมพ์ใหญ่

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 ToUpperInvariant = " + str1.ToUpperInvariant());

        Console.WriteLine("String 2 = " + str2);
        Console.WriteLine("String2 ToUpperInvariant = " + str2.ToUpperInvariant());

        Console.WriteLine("String 3 = " + str3);
        Console.WriteLine("String3 ToUpperInvariant = " + str3.ToUpperInvariant());
    }
}

ผลลัพธ์

String 1 = one
String1 ToUpperInvariant = ONE
String 2 = TWO
String2 ToUpperInvariant = TWO
String 3 = ThrEE
String3 ToUpperInvariant = THREE

ตัวอย่างที่ 2: เปรียบเทียบ ToUpperInvariant กับ ToLowerInvariant

using System;

public class Demo
{
    public static void Main(string[] args)
    {
        string str1 = "abcd";
        string str2 = "PQRS";

        Console.WriteLine("String 1 = " + str1);
        Console.WriteLine("String1 ToUpperInvariant = " + str1.ToUpperInvariant());

        Console.WriteLine("String 2 = " + str2);
        Console.WriteLine("String2 ToLowerInvariant = " + str2.ToLowerInvariant());
    }
}

ผลลัพธ์

String 1 = abcd
String1 ToUpperInvariant = ABCD
String 2 = PQRS
String2 ToLowerInvariant = pqrs

สรุป

  • ToUpperInvariant() แปลงเป็นตัวพิมพ์ใหญ่ด้วยกฎ Invariant Culture — ผลลัพธ์คงที่ ไม่ขึ้นกับระบบ/ภาษา/ภูมิภาค
  • เหมาะสำหรับ: internal processing, identifiers, protocols, file formats, database keys, comparisons
  • ต่างจาก ToUpper() ที่ใช้ CurrentCulture — อาจให้ผลต่างในบางภาษา (เช่น ตุรกี: 'i' → 'İ' ไม่ใช่ 'I')
  • สตริงเดิมไม่เปลี่ยน (immutable) — คืนสตริงใหม่
  • มี ToLowerInvariant() สำหรับตัวพิมพ์เล็ก

เมื่อไหร่ควรใช้ Invariant vs Current Culture

สถานการณ์เมธอดที่แนะนำเหตุผล
แสดงผลให้ผู้ใช้ (UI, รายงาน)ToUpper() / ToLower()เคารพการตั้งค่าภาษาของผู้ใช้
เปรียบเทียบสตริงภายใน (case-insensitive)ToUpperInvariant() / ToLowerInvariant()ผลลัพธ์สม่ำเสมอ ทุกสภาพแวดล้อม
กำหนดค่า config, registry, file formatToUpperInvariant() / ToLowerInvariant()ต้องอ่านได้เหมือนกันทุกเครื่อง
Protocol headers, HTTP, email, URLToLowerInvariant()มาตรฐานระบุ lowercase (RFC)
Database keys, identifiersToUpperInvariant() หรือ ToLowerInvariant()Consistent ไม่ขึ้นกับ server locale

ตัวอย่าง: Case-insensitive comparison ที่ถูกต้อง

string a = "Straße";  // German sharp S
string b = "STRASSE";

// ผิด - ใช้ CurrentCulture
bool bad = a.ToUpper() == b.ToUpper(); // อาจ false ในบาง culture

// ถูก - ใช้ InvariantCulture
bool good = a.ToUpperInvariant() == b.ToUpperInvariant(); // true เสมอ

// หรือดีกว่า - ใช้ StringComparison
bool best = string.Equals(a, b, StringComparison.OrdinalIgnoreCase); // แนะนำสุด