स्ट्रिंग सी में उद्देश्य सी में स्ट्रिंग खोज


87

मैं वस्तुनिष्ठ c में स्ट्रिंग की सरणी में एक विशिष्ट स्ट्रिंग खोजना चाहता हूं। क्या कोई इस संबंध में मेरी मदद कर सकता है?


क्या यह आपका होमवर्क है? मुझे लगता है कि ऐसा करना आसान है। सिर्फ लूपिंग और तुलना क्यों?
वोदखंग

ना, इसका होमवर्क नहीं, मुझे एक विशिष्ट स्ट्रिंग की खोज के लिए सर्वश्रेष्ठ एल्गोरिथ्म की आवश्यकता थी, जो कि iPhone में बहुत अधिक संसाधनों की लागत नहीं है, यही कारण है कि मैंने सवाल डाला
गंदी नाइट

जवाबों:


193
BOOL isTheObjectThere = [myArray containsObject: @"my string"];

या यदि आपको यह जानना है कि यह कहां है

NSUInteger indexOfTheObject = [myArray indexOfObject: @"my string"];

मैं आपको NSArray पर प्रलेखन पढ़ने की जोरदार सलाह देता हूं । अपना प्रश्न पोस्ट करने से पहले ऐसा करना सबसे अच्छा है :-)


मान लीजिए कि मेरे पास एक सरणी है जिसमें NSArray * myArr = [[NSArray आवंटित] initWithObjects: @ "test1", @ "test3", @ "test3", nil]; मैं "tes" की खोज करना चाहता था, तब मैं कहता हूं कि मुझे काम करने के लिए एक वाइल्ड कार्ड स्टफ चाहिए था, जिसे मैं समझ नहीं पाया, इसलिए मैंने यह सवाल रखा, लेकिन जवाब के लिए धन्यवाद, सराहना की
गंदे नाइट

आप या तो प्रत्येक मान का परीक्षण करते हैं, या NSPredicate में देखते हैं जो संग्रह वस्तुओं के लिए बहुत व्यापक खोज प्रदान करता है - लगभग SQL जितना शक्तिशाली जहां क्लॉस होता है। डेवलपर
.apple.com

45

आप स्ट्रिंग की सरणी में स्ट्रिंग्स की खोज के लिए NSPredicate क्लास का उपयोग कर सकते हैं। नीचे नमूना कोड देखें।

NSMutableArray *cars = [NSMutableArray arrayWithObjects:@"Maruthi",@"Hyundai", @"Ford", @"Benz", @"BMW",@"Toyota",nil];

NSString *stringToSearch = @"i";

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@",stringToSearch]; // if you need case sensitive search avoid '[c]' in the predicate

NSArray *results = [cars filteredArrayUsingPredicate:predicate];

स्ट्रिंग्स की सरणी में स्ट्रिंग्स को खोजने के लिए यह सबसे प्रभावी तरीका है


यह छोटे सरणी के लिए ठीक काम करता है, लेकिन अगर आपके पास बहुत बड़ा सरणी है (अधिक 30k रिकॉर्ड है) तो आप किसी भी विचार कर सकते हैं
amit gupta

फिर ऐरे को क्रमबद्ध रखें और पता लगाने के लिए और नए तत्वों को सम्मिलित करने के लिए एक द्विआधारी खोज (bsearch) का उपयोग करें। NSArray / NSMutableArray के पास इसके लिए तरीके हैं।
spstanley

3
NSMutableArray *cars = [NSMutableArray arrayWithObjects:@"Max",@"Hai", @"Fine", @"Bow", @"Bomb",@"Toy",nil];

NSString *searchText = @"i";
 NSArray *results = [cars filteredArrayUsingPredicate:predicate];

// if you need case sensitive search avoid '[c]' in the predicate

 NSPredicate *resultPredicate = [NSPredicate
                                predicateWithFormat:@"title contains[c] %@",
                                searchText];


searchResults = [cars  filteredArrayUsingPredicate:resultPredicate];

हालांकि यह कोड स्निपेट प्रश्न का उत्तर दे सकता है, लेकिन यह स्पष्टीकरण देना बेहतर है कि यह प्रश्न का उत्तर कैसे देता है ताकि यह उत्तर साइट के भावी आगंतुकों के लिए उपयोगी हो
RobV

कोड का यह टुकड़ा शब्दों की एक सरणी में शब्द खोजने के लिए ठीक काम करता है।
राहुल के राजन

मैं शुरुआती पाठ के साथ ऐसा करना चाहता हूं। मेरा मतलब है कि खोज पाठ को किसी भी जगह से शुरू करने से मिलान करने की आवश्यकता है। कृपया सहायता करें
गौतम श्रीवास्तव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.