मैं एक आईओएस UITableView ऑब्जेक्ट को सॉर्ट करने का प्रयास कर रहा हूं। मैं वर्तमान में निम्नलिखित कोड का उपयोग कर रहा:विराम चिह्न को अनदेखा करें (उद्देश्य-सी)
// Sort terms alphabetically, ignoring case
[self.termsList sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
यह मेरी सूची सॉर्ट करता, मामले की अनदेखी ह्विस्ट। हालांकि, विराम चिह्न को अनदेखा करना भी अच्छा होगा। उदाहरण के लिए:
car
c.a.t.
cat
(यह नहीं है वास्तव में बात दो बिल्लियों (बिल्ली या बिल्ली) की जो पहली बार इतने लंबे समय के रूप में वे क्रमबद्ध रहे हैं आता है,:
c.a.t.
car
cat
इस प्रकार हल कर दिया जाना चाहिए एक दूसरे के बगल में)।
क्या इसके आसपास जाने के लिए कोई आसान तरीका है? मुझे लगता है कि समाधान में स्ट्रिंग से अल्फान्यूमेरिक वर्णों को निकालने में शामिल होगा, फिर उनको तुलना करना, फिर उन्हें वापस अपने पूर्व राज्यों में वापस गैर-अल्फान्यूमेरिक वर्णों के साथ वापस लौटना होगा।
वास्तव में, केवल उन्हीं पात्रों की मैं वास्तव में देखभाल करता हूं (।) लेकिन यदि कोई समाधान है जो आसानी से सभी विराम चिह्नों को कवर करता है तो यह जानना उपयोगी होगा।
नोट: मैंने एक महीने पहले यह exact same question of Java पूछा था। अब, मैं उद्देश्य-सी में एक ही समाधान बना रहा हूं। मुझे आश्चर्य है कि अगर वहाँ आईओएस एपीआई कि यह आसान बनाने के लिए किसी भी चाल उपलब्ध हैं ...
संपादित: मैं विराम चिह्न पट्टी और एक अन्य सरणी जो मैं प्रकार (@tiguero ने सुझाव दिया) को भरने के लिए निम्नलिखित कोड का उपयोग कर की कोशिश की है । हालांकि, मुझे नहीं पता कि अंतिम चरण कैसे करें: वास्तव में दूसरे सरणी के अनुसार पहली सरणी को सॉर्ट करने के लिए।
NSMutableArray *arrayWithoutPunctuation = [[NSMutableArray alloc] init];
for (NSString *item in arrayWithPunctuation)
{
// Replace hyphens/periods with spaces
item = [item stringByReplacingOccurrencesOfString:@"-" withString:@" "]; // ...hyphens
item = [item stringByReplacingOccurrencesOfString:@"." withString:@" "]; // ...periods
[arrayWithoutPunctuation addObject:item];
}
[arrayWithoutPunctuation sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
यह 'arrayWithoutPunctuation' जो क्रमबद्ध किया जाता है प्रदान करता है, लेकिन निश्चित रूप का विराम चिह्न शामिल नहीं है: यहाँ मेरी कोड है। यह कोई अच्छा नहीं है, क्योंकि, अब इसे अच्छी तरह से क्रमबद्ध किया गया है, इसमें अब विराम चिह्न नहीं है जो पहले स्थान पर सरणी के लिए महत्वपूर्ण है। मुझे क्या करना है 'arrayWithPunctuation' को 'arrayWithoutPunctuation' के क्रम के अनुसार क्रमबद्ध करें ... किसी भी मदद की सराहना की।
बस एक कस्टम तुलनित्र का उपयोग करें। –
मेरा जवाब मान्य नहीं है? – tiguero
अभी तक मैं इसे लागू करने में सक्षम नहीं हूं। एक बार जब मैं इसे काम करने के लिए प्राप्त कर सकता हूं तो मैं स्वीकार करूंगा – CaptainProg