2012-02-13 30 views
23

Câu hỏi của tôi cũng tương tự như How do I check if a string contains another string in Objective-C?iPhone: tìm một chuỗi trong khác với trường hợp insensetive

Làm thế nào tôi có thể kiểm tra xem một chuỗi (NSString) chứa một chuỗi nhỏ hơn nhưng với bỏ qua trường hợp?

NSString *string = @"hello bla bla"; 

Tôi đã hy vọng cho một cái gì đó như:

NSLog(@"%d",[string containsSubstring:@"BLA"]); 

Dù sao là có cách nào để tìm thấy nếu một chuỗi chứa một chuỗi với bỏ qua trường hợp? Nhưng xin vui lòng không chuyển đổi cả hai chuỗi thành UpperCase hoặc LowerCase.

+0

tôi xin lỗi nhưng điều đó khiến tôi khó hiểu .. !! – Sarah

+0

Tại sao bạn không muốn thực hiện điều này bằng cách chuyển đổi cả hai chuỗi thành chữ thường/chữ hoa? Đó sẽ là cách tốt nhất để làm điều đó hoặc sử dụng 'NSRegularExpression'. – mattjgalloway

Trả lời

75

Tương tự như câu trả lời được cung cấp trong liên kết, nhưng sử dụng options.

Xem - (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask trong Apple doc

NSString *string = @"hello bla bla"; 

if ([string rangeOfString:@"BLA" options:NSCaseInsensitiveSearch].location == NSNotFound) 
{ 
    NSLog(@"string does not contain bla"); 
} 
else 
{ 
    NSLog(@"string contains bla!"); 
} 
0

Phương pháp

[string rangeOfString:@"bla" options:NSCaseInsensitiveSearch]; 

sẽ giúp bạn.

2
NSString *string = @"hello BLA"; 
if ([string rangeOfString:@"bla" options:NSCaseInsensitiveSearch].location == NSNotFound) { 
    NSLog(@"string does not contain bla"); 
} else { 
    NSLog(@"string contains bla!"); 
} 
0

Bạn có thể sử dụng -(NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask; để có được một phạm vi cho một chuỗi con, các tham số mask được sử dụng để xác định trường hợp trận đấu nhạy cảm.

Ví dụ:

NSRange r = [str rangeOfString:@"BLA" 
         options:NSCaseInsensitiveSearch]; 

Như đã nêu trong documentation, phương thức trả về một loạt như {NSNotFound, 0} khi chuỗi không được tìm thấy.

BOOL b = r.location == NSNotFound; 

quan trọng phương pháp này đặt ra một ngoại lệ nếu chuỗi là nil.

4

Từ iOS 8, bạn có thể thêm phương thức containsString: hoặc localizedCaseInsensitiveContainsString vào NSString.

if ([string localizedCaseInsensitiveContainsString:@"BlA"]) { 
    NSLog(@"string contains Case Insensitive bla!"); 
} else { 
    NSLog(@"string does not contain bla"); 
} 
Các vấn đề liên quan