2008-11-02 22 views

cevap

85

kullanımı -[NSString rangeOfString:]:

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

bulur ve alıcı içinde belirli bir dizeye ilk geçtiği aralığı döndürür.

+8


Ve 'NSRange benzer bu yöntemi ve diğerleri uygulayan bir kategori ekledi. konum 'gerçek indeks. – devios1

+1

'ise (NSRange.location! = NSNotFound)' bir eşleşme buldunuz. –

18

Orijinal NSString nesnesini genişletmek için bir kategori yazdım. Belki siz buna referans olabilirsiniz. (Ayrıca benim de blog article görebilirsiniz.)

ExtendNSString.h:

#import <Foundation/Foundation.h> 

@interface NSString (util) 

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

@end 

ExtendNSStriing.m: String bir içerdiğinde

#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

NSRange'ın daha iyi bir kullanımı aşağıdaki gibi olmalıdır: 'code' - (int) indexOf: (NSString *) text { NSRange aralığı = [self rangeOfString: text]; if (range.location! = NSNotFound) { geri dönüş aralığı.konumu; } else { dönüş -1; } } 'code' – loretoparisi

+0

Güzel, temiz, yeniden kullanılabilir çözüm. Ayrıca, 2014'te bu kadar bariz şekilde basit yardımcı işlevler yazmamız için hala Apple'a -1 oyladı. Neden bizim için hayatı kolaylaştırmıyorlar? –

28

bilmen istiyorsanız dize b bunu yapmak için yolumu kullan.

#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 
} 

Bu daha az okunabilir ama geç oldu biliyorum Performansın

+1

Sadece neye ihtiyacım vardı --- Teşekkürler! –

+0

gerçekten harika! –