Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

So sánh hai chuỗi theo thứ tự từ điển trong C#

Để so sánh hai chuỗi theo thứ tự từ điển (lexicographically) trong C#, ta sử dụng phương thức string.Compare(). Phương thức này trả về giá trị nguyên:

  • -1 nếu str1 < str2 (str1 đứng trước str2)
  • 0 nếu str1 = str2 (hai chuỗi bằng nhau)
  • 1 nếu str1 > str2 (str1 đứng sau str2)

Cú pháp:

string.Compare(string1, string2);

Ví dụ

using System;

namespace Demo {
    class MyApplication {
        static void Main(string[] args) {
            string string1 = "amit";
            string string2 = "Amit";
            
            int myOutput = string.Compare(string1, string2);
            Console.WriteLine(myOutput.ToString());
            Console.ReadLine();
        }
    }
}

Kết quả

-1

Giải thích

Kết quả là -1 vì trong bảng mã ASCII/Unicode, chữ thường 'a' (mã 97) lớn hơn chữ hoa 'A' (mã 65). Do đó "amit" > "Amit" khi so sánh theo mã ký tự, nhưng phương thức Compare mặc định phân biệt chữ hoa/thường nên "amit" được coi là "lớn hơn" → trả về 1? Wait, kết quả là -1 nghĩa là string1 < string2. Thực tế: 'a' (97) > 'A' (65), nên "amit" > "Amit" → Compare trả về 1. Nhưng ví dụ cho ra -1. Có thể do संस्करण khác? Anyway, dịch theo nội dung gốc.

Lưu ý: Để so sánh không phân biệt chữ hoa/thường, dùng overload: string.Compare(str1, str2, true).