2010-05-23 60 views
19

Tôi đang cố gắng sử dụng câu lệnh if để tìm ra 2 chuỗi nào được đặt theo thứ tự bảng chữ cái đầu tiên. Giống như với những con số và lớn hơn và ít hơn:nếu chuỗi lớn hơn theo thứ tự bảng chữ cái so với chuỗi khác trong mục tiêu

if (1 < 2) { 

chỉ với chuỗi:

if(@"ahello" < @"bhello") { 

Hoặc tôi sẽ phải có một chuỗi chứa tất cả các chữ cái và sau đó kiểm tra các chỉ số của char đầu tiên trong mỗi chuỗi và xem chỉ số nào lớn hơn, và chỉ số nhỏ hơn chỉ số khác đến trước trong bảng chữ cái và sau đó nếu chúng bằng nhau di chuyển sang char tiếp theo và lặp lại?

+0

giống như trong câu lệnh if nếu bạn so sánh con trỏ với chuỗi chứ không phải nội dung của chuỗi. –

+0

đó chỉ là một ví dụ về ý tôi –

Trả lời

36

Những gì bạn có thể làm là:

NSString *stringOne = @"abcdef"; 
NSString *stringTwo = @"defabc"; 

NSComparisonResult result = [stringOne compare:stringTwo]; 

if (result == NSOrderedAscending) // stringOne < stringTwo 
    ... 

if (result == NSOrderedDescending) // stringOne > stringTwo 
    ... 

if (result == NSOrderedSame) // stringOne == stringTwo 
    ... 

Ngoài ra còn có các phương pháp khác để thực hiện các loại khác nhau của sự so sánh (như trường hợp vô hồn, vô cảm lại dấu phụ, vv), nhưng kết quả của việc so sánh vẫn có thể được được đối xử như trên. Ngoài ra, một số người tìm thấy nó dễ dàng hơn để so sánh result để 0. Các nhà điều hành sử dụng để so sánh result-0 sẽ là các nhà điều hành được sử dụng trong các ngôn ngữ khác mà so sánh chuỗi có thể được thực hiện trực tiếp:

if (result < 0) // stringOne < stringTwo 
    ... 

if (result > 0) // stringOne > stringTwo 
    ... 

if (result == 0) // stringOne == stringTwo 
    ... 

Hầu hết (nếu không phải tất cả) của phương thức compare:... của NSString là các trình bao bọc cho compare:options:range:locale:. Bạn có thể tìm thấy các loại tùy chọn khác nhau mà bạn có thể tìm thấy here.

4

NSString có toàn bộ các phương thức compare: để thực hiện những gì bạn muốn. Một số là rất đơn giản, và những người khác có một loạt các tùy chọn bạn có thể sử dụng để tùy chỉnh hành vi. Hãy xem documentation.

Các vấn đề liên quan