2012-06-28 15 views
15

Jak mogę uzyskać pozycję/indeks podciągu w obrębie NSString?Pozycja podłańcucha w NSString

Lokalizuję lokalizację w następujący sposób.

NSRange range = [string rangeOfString:searchKeyword]; 
NSLog (@"match found at index:%u", range.location); 

ta zwraca index:2147483647 gdy searchKeyword jest podciąg ciągu string.

Jak mogę uzyskać taką wartość indeksu jak 20 lub 5?

Odpowiedz

54

2147483647 to to samo, co NSNotFound, co oznacza, że ​​szukany ciąg (searchKeyword) nie został znaleziony.

NSRange range = [string rangeOfString:searchKeyword]; 
if (range.location == NSNotFound) { 
    NSLog(@"string was not found"); 
} else { 
    NSLog(@"position %lu", (unsigned long)range.location); 
} 
+0

Dzięki - @ Kevin Ballard o pomoc. Czy możesz mi pomóc, jak mogę wybrać podciąg na podstawie tego zakresu. na przykład "I, oczywiście, należy zapytać: czy warto zawrzeć z Turkami najbardziej zapewnione greckie posiadłości, gdy ** Grecja * znajduje się pod turecką inwazją i ujarzmieniem?". tutaj znalazłem lokalizację Grecji, teraz chcę wybrać "podciąg" jednego lub dwóch słów przed i po tych słowach greckich. jak "kiedy Grecja jest pod turecką". możesz pomóc Proszę! –

+0

@ShaheenRehman: Prawdopodobnie chcesz użyć opcji '-enumerateSubstringsInRange: options: usingBlock:'. To może dać ci indywidualne słowa. –

+0

- @ Kevin Ballard, czy możesz podać przykład kodu '-enumerateSubstringsInRange: options: usingBlock:' API. –

8
NSString *searchKeyword = @"your string"; 

NSRange rangeOfYourString = [string rangeOfString:searchKeyword]; 

if(rangeOfYourString.location == NSNotFound) 
{ 
    // error condition — the text searchKeyword wasn't in 'string' 
} 
else{ 
    NSLog(@"range position %lu", rangeOfYourString.location); 
} 

NSString *subString = [string substringToIndex:rangeOfYourString.location]; 

może to pomoże ....

+0

dzięki - @ Kevin Ballard o pomoc. Czy możesz mi pomóc, jak mogę wybrać podciąg na podstawie tego zakresu. na przykład "I, oczywiście, należy zapytać: czy warto zawrzeć z Turkami najbardziej zapewnione greckie posiadłości, gdy ** Grecja * znajduje się pod turecką inwazją i ujarzmieniem?" Tutaj znalazłem miejsce Grecji teraz, gdy chcę aby wybrać "podciąg" jednego lub dwóch słów przed i po tych słowach greckich. jak "kiedy Grecja jest pod turecką". możesz pomóc Proszę! –

+0

możesz go użyć .... [string substringToIndex: rangeOfYourString.location]; Edytuję w kodzie ... może to ci pomoże – Abhishek

+0

dzięki - @ Abhishek to działa dla mnie '[string substringFromIndex: range.location];' –