2014-07-07 5 views
6

में अपरकेस ग्रीक परिवर्तित मुझे क्या करना कोशिश कर रहा हूँ काफी सरल है:जावा

String example = "Τάχιστη αλώπηξ βαφής ψημένη γη - Mary Had A Little Lamb"; 
String upper = example.toUpperCase(); 

एक अपरकेस शब्द उच्चारण वर्ण शामिल करना चाहिए के यूनानी, केवल पहले पत्र में।

String upper = example.toUpperCase(new java.util.Locale("el")); 
:

// upper contains the following (incorrect) string: 
// ΤΆΧΙΣΤΗ ΑΛΏΠΗΞ ΒΑΦΉΣ ΨΗΜΈΝΗ ΓΗ - MARY HAD A LITTLE LAMB 

// correct string: 
// ΤΑΧΙΣΤΗ ΑΛΩΠΗΞ ΒΑΦΗΣ ΨΗΜΕΝΗ ΓΗ - MARY HAD A LITTLE LAMB 

(। लहजे को देखने के लिए कठिन हैं, लेकिन वे वहाँ हो)

Java 1.7 documentation के अनुसार, मैं बहुत की तरह, toUpperCase के लिए कोई स्थान पारित करने के लिए सक्षम होना चाहिए

हालांकि, ऐसा लगता है कि toUpperCase के लिए कोई विशिष्ट नियम नहीं हैं जो यूनानी को सही तरीके से संभालते हैं।

क्या किसी विशेष लोकेल के लिए toUpperCase के व्यवहार को परिभाषित करना संभव है, ताकि मैं सुनिश्चित कर सकूं कि मुझे सही परिणाम मिल रहा है?

वैकल्पिक रूप से, मैं इस विशेष मामले को संभालने के लिए सिर्फ उपयोगिता वर्ग लिख सकता हूं। लेकिन यदि यह संभव है, तो यह अन्य भाषाओं के लिए आने पर, प्रति समारोह इस समारोह को ओवरराइड करना पसंद करेगा।

+3

'toUpperCase' के स्रोत को देखते हुए, ऐसा प्रतीत होता है कि यह केवल तीन वर्णों को छोड़कर, शेष पाठ को देखे बिना व्यक्तिगत रूप से प्रत्येक चरित्र का अनुवाद करता है: तुर्की, एजेरी, लिथुआनियाई। वे कोड में कड़ी मेहनत कर रहे हैं। तो आपको शायद अपना खुद का रोल करना होगा। (पीएस शायद आपको इसे ओरेकल को बग रिपोर्ट के रूप में जमा करना चाहिए।) – ajb

+0

यही वह था जिसे मैं डरता था। मैंने एक नहीं देखा, लेकिन मैं उम्मीद कर रहा था कि प्रति लोकेल उस व्यवहार को बढ़ाने का एक तरीका था। –

+1

पीएस हार्ड-वायर्ड कोड 'बूलियन लोकेल पर निर्भर करता है' निर्भर करता है = (लैंग == "tr" || lang == "az" || lang == "lt"); '। _ वे strings._ Gaaaaaaaaack की तुलना करने के लिए '==' का उपयोग कर रहे हैं। – ajb

उत्तर

0

प्रति @ajb, इस जावा में डिफ़ॉल्ट रूप से समर्थित नहीं है। मुझे अपना खुद का समाधान बनाना पड़ा।

0

मैं करने की कोशिश की निम्नलिखित और काम करने के लिए लग रहा था:

String example = "Τάχιστη αλώπηξ βαφής ψημένη γη - Mary Had A Little Lamb"; 
String upper = example.toUpperCase(); 
String temp = Normalizer.normalize(upper, Normalizer.Form.NFD); 
Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+"); 
System.out.println(pattern.matcher(temp).replaceAll(""));