2013-10-19 19 views
10

मैं जावा में वर्णमाला में एक स्ट्रिंग को सॉर्ट करना चाहता हूं, जैसा कि कैपिटल लेटर और लोअरकेस अक्षर एएबीबीसीसीडीडीईएफएफजीजी का पालन करता है। उदाहरण के लिए उदाहरण के लिए यदि मैंने एबीसी को मुझे एएबीसी धन्यवाद दिया है !!स्ट्रिंग को क्रमबद्ध रूप से जावा कैसे क्रमबद्ध करें

+7

यह भी नए साल की इच्छा के लिए जल्दी है, उस समय तक आप कुछ दिखाने के लिए होगा प्रयास है। अब तक तुमने क्या प्रयास किये हैं? –

उत्तर

13

आप Arrays.sort का उपयोग कर यदि आप पहले एक सरणी में पात्रों डाल कर सकते हैं। (यह बजाय Character वस्तुओं char पुरातन की एक सरणी, ताकि एक कस्टम केस-संवेदी तुलनित्र का उपयोग करने में होना चाहिए।)

// put the characters into an array 
Character[] chars = new Character[str.length()]; 
for (int i = 0; i < chars.length; i++) 
    chars[i] = str.charAt(i); 

// sort the array 
Arrays.sort(chars, new Comparator<Character>() { 
    public int compare(Character c1, Character c2) { 
     int cmp = Character.compare(
      Character.toLowerCase(c1.charValue()), 
      Character.toLowerCase(c2.charValue()) 
     ); 
     if (cmp != 0) return cmp; 
     return Character.compare(c1.charValue(), c2.charValue()); 
    } 
}); 

// rebuild the string 
StringBuilder sb = new StringBuilder(chars.length); 
for (char c : chars) sb.append(c); 
str = sb.toString(); 
+0

यह यूटीएफ -16 सरोगेट्स को विभाजित करेगा। –

2

स्ट्रिंग को एक वर्ण सरणी में बदलें, फिर अपने चरित्र में प्रत्येक वर्ण के int मानों की तुलना करें।

तरीके की जरूरत: String.toCharArray();

7

आप इस तरह की कोशिश Collections.sort देखने के लिए कोशिश कर सकते हैं और उसके बाद: -

Collections.sort(caps, String.CASE_INSENSITIVE_ORDER); 

कुछ इस तरह: -

private static Comparator<String> ALPHA_ORDER = new Comparator<String>() { 
    public int compare(String str1, String str2) { 
     int x = String.CASE_INSENSITIVE_ORDER.compare(str1, str2); 
     if (x== 0) { 
      x= str1.compareTo(str2); 
     } 
     return x; 
    } 
}; 

Collections.sort(list, ALPHA_ORDER); 

संपादित करें: -

एक स्ट्रिंग में वर्णानुक्रम छँटाई इस तरह की कोशिश के लिए: -

Collator col = Collator.getInstance(new Locale("en", "EN")); 
String s = "AbaC"; 
String[] s1= s.split(""); 
Arrays.sort(s1, col); 
String sorted = ""; 
for (int i = 0; i < s1.length; i++) 
{ 
    sorted += s1[i]; 
} 
System.out.println(sorted); 
+1

ओपी स्ट्रिंग्स में वर्णों को क्रमबद्ध करना चाहता है, तारों की सूची नहीं। – Boann

+0

स्ट्रिंग को वर्णों की सूची में बदलने का विषय कौन सा है, यह छोटा हिस्सा है। –

+0

@ बोआन: - मेरा जवाब अपडेट किया गया। उम्मीद है कि यह बेहतर बनाता है? –

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