2009-12-05 5 views
19

के लिए एनएसएआरएआरई के माध्यम से खोजें मैं एक निश्चित स्ट्रिंग के लिए अपने एनएसएआरएआरई के माध्यम से खोजना चाहता हूं।स्ट्रिंग

उदाहरण:

NSArray वस्तुएं हैं: "कुत्ता", "बिल्ली", "वसा कुत्ता", "बात", "एक और बात",

मैं चाहता हूँ "बिल्ली यहाँ एक और बात है" "अन्य" शब्द की खोज करें और परिणामों को एक सरणी में रखें, और अन्य, गैर नतीजे, किसी अन्य सरणी में रखें जिसे आगे फ़िल्टर किया जा सकता है।

उत्तर

37

परीक्षण नहीं किया गया है इसलिए एक वाक्यविन्यास त्रुटि हो सकती है, लेकिन आपको यह विचार मिल जाएगा।

NSArray* inputArray = [NSArray arrayWithObjects:@"dog", @"cat", @"fat dog", @"thing", @"another thing", @"heck here's another thing", nil]; 

NSMutableArray* containsAnother = [NSMutableArray array]; 
NSMutableArray* doesntContainAnother = [NSMutableArray array]; 

for (NSString* item in inputArray) 
{ 
    if ([item rangeOfString:@"another"].location != NSNotFound) 
    [containsAnother addObject:item]; 
    else 
    [doesntContainAnother addObject:item]; 
} 
+5

हां, यह आवश्यक है। –

+0

यह कोड बहुत अच्छा काम करता है लेकिन मैं पाया स्ट्रिंग की सरणी में अनुक्रमणिका कैसे प्राप्त कर सकता हूं? –

+2

इसे स्वयं सोल्ड किया गया: के लिए (NSString * इनपुट इनपुट में आइटम) {अनुक्रमणिका ++; अगर ([आइटम रेंजऑफस्ट्रिंग: @ "दूसरा"]। स्थान! = एनएसएनओटीफाउंड) { [शामिल है अन्य addObject: item]; saveIndex = अनुक्रमणिका - 1; } अन्य [doesntContainAnother addObject: item]; } –

47

यदि सरणी के अंदर तार अलग-अलग हैं, तो आप सेट का उपयोग कर सकते हैं। NSSet बड़े आदानों पर तेजी से तो NSArray है:

NSArray * inputArray = [NSMutableArray arrayWithObjects:@"one", @"two", @"one again", nil]; 

NSMutableSet * matches = [NSMutableSet setWithArray:inputArray]; 
[matches filterUsingPredicate:[NSPredicate predicateWithFormat:@"SELF contains[c] 'one'"]]; 

NSMutableSet * notmatches = [NSMutableSet setWithArray:inputArray]; 
[notmatches minusSet:matches]; 
+3

इसे करने का दिलचस्प तरीका! –

1

यह क्योंकि के रूप में दस्तावेज़ के अनुसार कार्य नहीं करेगा "indexOfObjectIdenticalTo:"। पहली वस्तु वस्तु आप में से गुजर रहे हैं के रूप में ही स्मृति पता है कि के सूचकांक रिटर्न

आपको अपनी सरणी के माध्यम से पार करने और तुलना करने की आवश्यकता है।

संबंधित मुद्दे