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

เมธอด String.CompareOrdinal() ใน C# : เปรียบเทียบสตริงด้วยค่าตัวเลขของ Char

เมธอด String.CompareOrdinal() ใน C# ใช้เปรียบเทียบออบเจ็กต์ String สองตัว โดยประเมินค่าตัวเลข (numeric values) ของออบเจ็กต์ Char ที่สอดคล้องกันในแต่ละสตริง โดยไม่คำนึงถึงวัฒนธรรม (culture-insensitive)

รูปแบบไวยากรณ์ (Syntax)

public static int CompareOrdinal(string str1, string str2);
  • str1, str2 : สตริงที่ต้องการเปรียบเทียบ

ค่าที่คืนกลับ

ค่าที่คืน ความหมาย
น้อยกว่า 0 str1 < str2
เท่ากับ 0 str1 = str2
มากกว่า 0 str1 > str2

ตัวอย่างที่ 1: เปรียบเทียบสตริงต่างกัน

using System;

public class Demo
{
    public static void Main(string[] args)
    {
        string s1 = "Amy";
        string s2 = "Katie";
        string s3 = s2; // อ้างอิงเดียวกัน
        
        Console.WriteLine("String1 = " + s1);
        Console.WriteLine("String2 = " + s2);
        Console.WriteLine("Are both strings equal? = " + s1.Equals(s2));
        Console.WriteLine("Are s2 and s3 equal? = " + s2.Equals(s3));
        Console.WriteLine(string.CompareOrdinal(s1, s2)); // -10 (A < K)
        Console.WriteLine(string.CompareOrdinal(s2, s3)); // 0 (เหมือนกัน)
    }
}

ผลลัพธ์

String1 = Amy
String2 = Katie
Are both strings equal? = False
Are both strings equal? = True
-10
0

ตัวอย่างที่ 2: เปรียบเทียบหลายคู่

using System;

public class Demo
{
    public static void Main(string[] args)
    {
        string s1 = "David";
        string s2 = "David";
        string s3 = s2;
        string s4 = "Tom";
        string s5 = s4;
        
        Console.WriteLine("String1 = " + s1);
        Console.WriteLine("String2 = " + s2);
        Console.WriteLine("String3 = " + s3);
        Console.WriteLine("String4 = " + s4);
        Console.WriteLine("String5 = " + s5);
        
        Console.WriteLine("Is s1 and s2 equal? = " + s1.Equals(s2));
        Console.WriteLine("Is s2 and s3 equal? = " + s2.Equals(s3));
        Console.WriteLine("Is s3 and s4 equal? = " + s3.Equals(s4));
        Console.WriteLine("Is s4 and s5 equal? = " + s4.Equals(s5));
        
        Console.WriteLine(string.CompareOrdinal(s1, s2)); // 0
        Console.WriteLine(string.CompareOrdinal(s2, s3)); // 0
        Console.WriteLine(string.CompareOrdinal(s3, s4)); // -16 (D < T)
        Console.WriteLine(string.CompareOrdinal(s4, s5)); // 0
    }
}

ผลลัพธ์

String1 = David
String2 = David
String3 = David
String4 = Tom
String5 = Tom
Is s1 and s2 equal? = True
Is s2 and s3 equal? = True
Is s3 and s4 equal? = False
Is s4 and s5 equal? = True
0
0
-16
0

สรุปและข้อแตกต่างจาก Compare()

  • CompareOrdinal : เปรียบเทียบด้วยค่า Unicode code point โดยตรง (Culture-insensitive)
  • String.Compare() : เปรียบเทียบตามกฎวัฒนธรรม (Culture-sensitive) เช่น "ß" = "ss" ในภาษาเยอรมัน
  • ใช้ CompareOrdinal เมื่อต้องการการเปรียบเทียบที่เร็วและ deterministic ไม่ขึ้นกับ locale
  • ตัวพิมพ์เล็กมีค่ามากกว่าตัวพิมพ์ใหญ่ (เช่น 'a' (97) > 'Z' (90))