2010-08-17 10 views
29

मुझे कोई समस्या है जिसे मैं समझ नहीं सकता।एनएसएसटींग प्रश्न - श्रेणीऑफस्ट्रिंग विधि

मैं स्ट्रिंग पर श्रेणीऑफस्ट्रिंग विधि को चलाने की कोशिश कर रहा हूं, और मुझे यकीन नहीं है कि स्ट्रिंग नहीं मिली है या नहीं। उदाहरण के लिए:

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

स्पष्ट रूप से, "डी" स्ट्रिंग "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

+0

क्या इसका मतलब है कि लंबाई की जांच करना "ऐप्पल-स्वीकृत" नहीं है? ;-) –

+0

मुझे नहीं पता। और किसी भी दर पर, सिर्फ इसलिए कि यह ऐप्पल द्वारा अनुमोदित नहीं है, इसे गलत नहीं बनाता है (देखें: ऐप स्टोर रिजेक्शन) –

13

श्रेणी के लंबाई देखें। यदि यह शून्य है, तो यह पाया गया था।

+0

NSString.h में टिप्पणियों से: "यदि लक्ष्य स्ट्रिंग नहीं मिली है तो ये विधियां लंबाई == 0 लौटती हैं"। मैं इस दृष्टिकोण को प्राथमिकता देता हूं, क्योंकि NSNotFound एक # परिभाषित एनएसआईएनटेगरमैक्स है और रनटाइम पर्यावरण (iee 32 बनाम 64 बिट) – nobre

+0

के आधार पर इसकी मान परिवर्तन बेहतर है। यदि रिसीवर शून्य है, तो लंबाई और स्थान दोनों 0 – Dare2Dream