2010-08-17 53 views
29

我有一個問題,我無法弄清楚。NSString的問題 - rangeOfString方法

我想在字符串上運行rangeOfString方法,我不知道如何確定是否找不到字符串。例如:

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

很明顯,「d」不包含在字符串「abc」中。我希望能夠這樣做:

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

這是什麼代碼?

謝謝!

回答

68

的NSString

-[NSString rangeOfString] 

返回值

一種NSRange給出結構中的 ASTRING的第一次出現的接收機的 位置和長度的文檔。 返回{NSNotFound,0}如果aString是 未找到或爲空(@「」)。

所以它看起來像:

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

是蘋果批准的方式。

編輯:

我做了一個非常糟糕的錯字,固定它,謝謝卡勒。

+2

您需要兩個等號。 – Kalle 2010-08-17 16:13:58

+0

這是否意味着檢查長度不是「Apple認可的」? ;-) – 2010-08-17 16:24:07

+0

我不知道。無論如何,僅僅因爲它沒有被Apple批准並不會導致錯誤(請參閱:App Store拒絕) – 2010-08-17 17:42:11

13

檢查長度的範圍。如果它不是零,就會被發現。

+0

從NSString.h中的註釋:「如果未找到目標字符串,則這些方法返回長度== 0」。我更喜歡這種方法,因爲NSNotFound是一個#define NSIntegerMax,其值根據運行時環境而變化(即32和64位)。 – nobre 2012-10-31 19:18:11

+0

檢查長度是否更好。如果接收器爲零,則長度和位置均返回爲0. – Dare2Dream 2013-04-12 19:15:18