Có bất kỳ điều gì tương tự với chức năng indexOf
trong các đối tượng NSString không?Chỉ mục NSStringOf trong Mục tiêu-C
Trả lời
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.
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
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
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? –
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
Chỉ cần những gì tôi cần --- Cảm ơn! –
thực sự tuyệt vời! –
Tôi biết đó là muộn, nhưng tôi đã thêm một thể loại mà thực hiện phương pháp này và nhiều người khác tương tự như javascript phương pháp chuỗi
https://github.com/williamFalcon/WF-iOS-Categories
Và 'NSRange. vị trí' là chỉ mục thực tế. – devios1
'if (NSRange.location! = NSNotFound)' sau đó bạn tìm thấy một kết quả phù hợp. –