2008-11-02 40 views

Trả lời

85

Sử dụng -[NSString rangeOfString:]:

- (NSRange)rangeOfString:(NSString *)aString; 

Tìm và trả về phạm vi của sự xuất hiện đầu tiên của một chuỗi cho trước trong máy thu.

+8

Và 'NSRange. vị trí' là chỉ mục thực tế. – devios1

+1

'if (NSRange.location! = NSNotFound)' sau đó bạn tìm thấy một kết quả phù hợp. –

18

Tôi đã viết một danh mục để mở rộng đối tượng NSString gốc. Có lẽ các bạn có thể tham khảo nó. (Bạn cũng có thể xem article trong blog của tôi quá.)

ExtendNSString.h:

#import <Foundation/Foundation.h> 

@interface NSString (util) 

- (int) indexOf:(NSString *)text; 

@end 

ExtendNSStriing.m:

#import "ExtendNSString.h" 

@implementation NSString (util) 

- (int) indexOf:(NSString *)text { 
    NSRange range = [self rangeOfString:text]; 
    if (range.length > 0) { 
     return range.location; 
    } else { 
     return -1; 
    } 
} 

@end 
+3

Việc sử dụng NSRange tốt hơn phải như sau 'mã' - (int) indexOf: (NSString *) văn bản { Phạm vi NSRange = [phạm vi tựOfString: văn bản]; if (range.location! = NSNotFound) { phạm vi trả về.location; } người khác { trả lại -1; } } 'mã' – loretoparisi

+0

Giải pháp tốt, sạch sẽ, có thể tái sử dụng. Và đã bình chọn -1 cho Apple vì vẫn khiến chúng tôi phải viết những chức năng trợ giúp đơn giản như vậy vào năm 2014. Tại sao họ không thể làm cho cuộc sống dễ dàng hơn cho chúng ta? –

28

Nếu bạn muốn chỉ biết khi String một chứa chuỗi b sử dụng cách của tôi để làm điều này.

#define contains(str1, str2) ([str1 rangeOfString: str2 ].location != NSNotFound) 

//using 
NSString a = @"PUC MINAS - BRAZIL"; 

NSString b = @"BRAZIL"; 

if(contains(a,b)){ 
    //TO DO HERE 
} 

Đây là ít có thể đọc được nhưng cải thiện hiệu suất

+1

Chỉ cần những gì tôi cần --- Cảm ơn! –

+0

thực sự tuyệt vời! –

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