2010-08-31 7 views
48

Ich habe ein NSString-Objekt, und ich möchte eine Teilzeichenfolge daraus machen, indem Sie ein Wort suchen.Suchen einer Teilzeichenfolge in einem NSString-Objekt

Zum Beispiel lautet meine Zeichenfolge: "Der Hund hat die Katze gefressen", ich möchte, dass das Programm das Wort "ate" findet und eine Teilzeichenkette erzeugt, die "die Katze" ist.

Kann mir jemand helfen oder mir ein Beispiel geben?

Danke,

Sagiftw

Antwort

80
NSRange range = [string rangeOfString:@"ate"]; 
NSString *substring = [[string substringFromIndex:NSMaxRange(range)] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
+4

Ich weiß, dass dieses Thema alt ist, aber FWIW, Sie können auch rangeOfString verwenden: Optionen: wo in Optionen verwenden Sie NSCaseInsensitiveSearch, wenn Groß- und Kleinschreibung ein Problem ist. Das heißt, wenn ein Benutzer in jedem Fall eine Zeichenfolge eingeben könnte und Sie nur wissen möchten, ob ein Muster vorhanden ist, unabhängig von der Groß-/Kleinschreibung, würden Sie die Suche ohne Berücksichtigung der Groß-/Kleinschreibung verwenden. – GTAE86

16
NSString *str = @"The dog ate the cat"; 
NSString *search = @"ate"; 
NSString *sub = [str substringFromIndex:NSMaxRange([str rangeOfString:search])]; 

Wenn Sie Leerzeichen trimmen möchten, können Sie separat tun.

2
NSString *theNewString = [receivedString substringFromIndex:[receivedString rangeOfString:@"Ur String"].location]; 

Sie nach einer Zeichenfolge suchen und dann die gesuchte Zeichenfolge in eine andere Zeichenfolge bekommen ...

8

Was diese Weise? Es ist fast das Gleiche. Aber vielleicht ist die Bedeutung von NSRange für Anfänger leichter zu verstehen, wenn es so geschrieben wird.

Endlich ist es die gleiche Lösung von jtbandes

NSString *szHaystack= @"The dog ate the cat"; 
    NSString *szNeedle= @"ate"; 
    NSRange range = [szHaystack rangeOfString:szNeedle]; 
    NSInteger idx = range.location + range.length; 
    NSString *szResult = [szHaystack substringFromIndex:idx]; 
1
-(BOOL)Contains:(NSString *)StrSearchTerm on:(NSString *)StrText 
{ 
    return [StrText rangeOfString:StrSearchTerm options:NSCaseInsensitiveSearch].location==NSNotFound?FALSE:TRUE; 
} 
3

versuchen diese ..

BOOL isValid=[yourString containsString:@"X"]; 

Diese Methode return true oder false. Wenn Ihre Zeichenfolge dieses Zeichen enthält, wird "true" zurückgegeben und andernfalls wird false zurückgegeben.

+0

Beachten Sie, dass dies nur für iOS 8.0 und höher funktioniert. – Werewolf

0

Sie können eine der beiden in der NSString-Klasse bereitgestellten Methoden verwenden, z. B. substringToIndex: und substringFromIndex:. Übergeben Sie einen NSRange als Ihre Länge und Position, und Sie werden die gewünschte Ausgabe haben.

Verwandte Themen