क्या एंड्रॉइड में अंतरराष्ट्रीय तारों को सही तरीके से सॉर्ट करने का कोई तरीका है? मैं एक कस्टम तुलनित्र, और compareTo()
विधि का उपयोग करता हूं, लेकिन यह मेरे लिए पर्याप्त नहीं है। मुझे इस "ö" जैसे अक्षरों को "ओ" के पास प्रदर्शित करना है, लेकिन वे सभी सूची के अंत में हैं। मैं तुलनित्र को यह सोचने के लिए मजबूर कैसे कर सकता हूं कि वे "ओ, ए, आदि ..." के समान हैं?एंड्रॉइड विशेष अक्षरों की तुलना
7
A
उत्तर
15
लोकेल-संवेदनशील स्ट्रिंग comaprision उपयोग करने के लिए Collator
का उपयोग करें। दस्तावेज़ों से:
लोकेल-संवेदनशील स्ट्रिंग तुलना निष्पादित करता है। एक ठोस उपclass, नियम आधारित कॉलरेटर, नियम सेट के उपयोग द्वारा कोलेशन ऑर्डरिंग के अनुकूलन की अनुमति देता है।
की तुलना तार का उदाहरण:
Collator deCollator = Collator.getInstance(Locale.GERMANY); // or new Locale("pl", "PL") for polish locale ;)
System.out.println(deCollator.compare("abcö", "abco"));
प्रिंट 1
।
आप क्रमबद्ध कोलेटर ऊपर का उपयोग कर तार की सूची चाहते हैं, आप लिख सकते हैं:
final List<String> strings = Arrays.asList(
"über", "zahlen", "können", "kreativ", "Äther", "Österreich");
Collections.sort(strings, deCollator); // Collator implements Comparator
System.out.println(strings);
प्रिंट:
[Äther, können, kreativ, Österreich, über, zahlen]
संपादित करें: बस देखा है कि तुम पॉलिश कर रहे हैं , इसलिए नीचे पोलिश उदाहरण:
final List<String> strings = Arrays.asList(
"pięć", "piec", "Pieczka", "pięść", "pieczęć", "pieczątka");
Collections.sort(strings, Collator.getInstance(new Locale("pl", "PL")));
System.out.println(strings);
// output: [piec, pieczątka, pieczęć, Pieczka, pięć, pięść]
संबंधित मुद्दे
- 1. एनएसएनंबर अक्षरों की तुलना
- 2. सी ++ दो स्ट्रिंग अक्षरों की तुलना करें
- 3. एन अक्षरों की स्ट्रिंग
- 4. एंड्रॉइड में बिटमैप छवियों की तुलना
- 5. एंड्रॉइड स्क्लाइट विशेष पात्र
- 6. अक्षरों की अधिकतम संख्या स्ट्रिंगबिल्डर
- 7. एंड्रॉइड में ओपनसीवी छवि तुलना
- 8. रेलों की तारीखों की तुलना
- 9. शब्दकोशों की सूचियों की तुलना
- 10. एंड्रॉइड पुश अधिसूचना सेवा तुलना
- 11. एंड्रॉइड JSON पुस्तकालयों की प्रदर्शन और उपयोगिता तुलना
- 12. एंड्रॉइड की तुलना में आईओएस एमुलेटर बहुत तेज़ क्यों है?
- 13. दो डेटासेट्स की तुलना करने की प्रक्रिया
- 14. आउटपुट स्ट्रिंग अक्षरों की कुल संख्या
- 15. टेक्स्ट फ़ाइल में अक्षरों की गणना आवृत्ति
- 16. वस्तुओं की तुलना करें?
- 17. एलडीएपी गुणों की तुलना
- 18. वस्तुओं की तुलना
- 19. जावा - कक्षाओं की तुलना?
- 20. स्ट्रिंगबफर सामग्री की तुलना
- 21. दो Arrays की तुलना
- 22. दो ऑब्जेक्ट्स की तुलना
- 23. पायथन: सूची की तुलना
- 24. अजाक्स पुस्तकालयों की तुलना
- 25. पायथन सूची की तुलना
- 26. नालीबल (बूलियन) की तुलना
- 27. टीएफएस: परिवर्तनों की तुलना
- 28. पावरशेल: तिथियों की तुलना
- 29. NSDates की तुलना
- 30. दो वस्तुओं की तुलना।
आपके महान उत्तर के लिए धन्यवाद! ;) असल में, मुझे भी सरल समाधान मिला: 'कोलेटर कॉललेटर = Collator.getInstance(); collator.setDecomposition (Collator.CANONICAL_DECOMPOSITION); collator.compare (एक, दो) 'दूसरा उदाहरण यहां दिखाता है कि' CANONICAL_DECOMPOSITION 'नियम क्या करता है: http://developer.android.com/reference/java/text/Collator.html – lomza
सावधान रहें,' Collator.getInstance () 'बिना स्पष्ट' लोकेल' पर्यावरण-निर्भर है: यह _ एक कोलेटर उदाहरण देता है जो ** उपयोगकर्ता के डिफ़ॉल्ट लोकेल ** के लिए उपयुक्त है। देखें "[डिफ़ॉल्ट लोकेल से सावधान रहें] (http://developer.android.com/reference/java/util/Locale.html#default_locale)" ._ – Xaerxess
चेतावनी के लिए धन्यवाद, लेकिन अब मुझे संदेह है। मुझे केवल उपयोगकर्ता को प्रदर्शित करने के लिए सॉर्ट किए गए डेटा की आवश्यकता है, इसे कहीं कहीं नहीं भेजना या कुछ गणना करना ... तो शायद डिफ़ॉल्ट लोकेल पर्याप्त है? लेकिन अगर मैं जर्मन और डैनिश अक्षरों को सही ढंग से सॉर्ट करना चाहता हूं और उन्हें मशीन आउटपुट के रूप में उपयोग करना चाहता हूं, तो सबसे अच्छा विकल्प 'लोकल.यूएस' लोकेल का उपयोग करना होगा? – lomza