मैं एक स्ट्रिंग के पात्रों के एक निश्चित सेट को एक प्रभावशाली तरीके से संबंधित प्रतिस्थापन चरित्र के साथ प्रतिस्थापित करना चाहता हूं।जावा स्ट्रिंग में वर्णों को कैसे बदलें?
उदाहरण के लिए:
String sourceCharacters = "šđćčŠĐĆČžŽ";
String targetCharacters = "sdccSDCCzZ";
String result = replaceChars("Gračišće", sourceCharacters , targetCharacters);
Assert.equals(result,"Gracisce") == true;
अधिक कुशल तरीका स्ट्रिंग वर्ग के replaceAll
विधि का उपयोग करने से देखते हैं है?
मेरा पहला विचार था:
final String s = "Gračišće";
String sourceCharacters = "šđćčŠĐĆČžŽ";
String targetCharacters = "sdccSDCCzZ";
// preparation
final char[] sourceString = s.toCharArray();
final char result[] = new char[sourceString.length];
final char[] targetCharactersArray = targetCharacters.toCharArray();
// main work
for(int i=0,l=sourceString.length;i<l;++i)
{
final int pos = sourceCharacters.indexOf(sourceString[i]);
result[i] = pos!=-1 ? targetCharactersArray[pos] : sourceString[i];
}
// result
String resultString = new String(result);
कोई भी विचार?
बीटीडब्ल्यू, यूटीएफ -8 वर्ण परेशानी पैदा कर रहे हैं, यूएस_एएससीआईआईआई यह ठीक काम करता है।
इस समाधान के साथ मुझे मिलता है: GraA? IA¡Ae। और बीटीडब्ल्यू, मैं न केवल विशिष्ट वर्णों को बदलना चाहता हूं बल्कि अन्य भाषाओं के कुछ अन्य लोगों को भी बदलना चाहता हूं। तो मैं वास्तव में एक समाधान जानना चाहता हूं जो मनमाने ढंग से मैपिंग के लिए काम करता है। – ManBugra
बिल्कुल। समस्या यह है कि diacritics कभी-कभी संयुक्त होते हैं, कभी-कभी नहीं, और स्ट्रिंग चरित्र-दर-चरित्र प्रतिस्थापन भ्रमित हो जाता है क्योंकि वास्तव में दो अक्षर होते हैं, एक नहीं। –
@ एमआर। चमकदार और नया: हाँ, System.out.println ("š" .toCharArray() लंबाई); आउटपुट '2' – ManBugra