2010-08-17 6 views
29

Ich habe ein Problem, das ich nicht herausfinden kann.NSString Frage - rangeOfString Methode

Ich versuche, die RangeOfString-Methode für eine Zeichenfolge auszuführen, und ich bin mir nicht sicher, wie ermittelt werden kann, wenn die Zeichenfolge nicht gefunden wurde. Zum Beispiel:

NSRange range = [@"abc" rangeOfString:@"d" options:NSCaseInsensitiveSearch range:NSMakeRange(0,3)]; 

Offensichtlich ist "d" nicht in der Zeichenfolge "abc" enthalten. Ich möchte in der Lage sein, dies zu tun:

if(the range is empty since "d" is not in "abc") 
    //do something 

Was ist der Code dafür?

Danke !!

Antwort

68

Aus der Dokumentation von NSString

-[NSString rangeOfString] 

Rückgabewert

Eine NSRange Struktur der Lage und Länge im Empfänger von das erste Auftreten von aString geben. Gibt {NSNotFound, 0} zurück, wenn aString nicht gefunden oder leer ist (@ "").

So wie es aussieht:

if ([@"abc" rangeOfString:@"d"].location == NSNotFound){ 
    //Do something 

Ist die Apple-zugelassene Art und Weise.

EDIT:

machte ich eine wirklich schlechte Tippfehler, es behoben, dank Kalle.

+2

Sie möchten zwei Gleichheitszeichen dort. – Kalle

+0

Bedeutet das, dass die Überprüfung der Länge nicht "Apple-genehmigt" ist? ;-) –

+0

Ich weiß es nicht. Und auf jeden Fall, nur weil es nicht von Apple genehmigt ist, macht es nicht falsch (siehe: App Store Ablehnungen) –

13

Überprüfen Sie die Länge der Palette. Wenn es nicht Null ist, wurde es gefunden.

+0

Aus den Kommentaren in NSString.h: "Diese Methoden geben length == 0 zurück, wenn die Zielzeichenfolge nicht gefunden wird". Ich bevorzuge diesen Ansatz, da NSNotFound ein #define NSIntegerMax ist und sein Wert sich abhängig von der Laufzeitumgebung ändert (d. H. 32 vs 64bit) – nobre

+0

Überprüfen auf Länge ist besser. Wenn der Empfänger Null ist, werden die Länge und die Position beide als 0 zurückgegeben. – Dare2Dream

Verwandte Themen