Để 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).