Dizginin belirli bir karakter kümesini, etkin bir şekilde karşılık gelen bir değiştirme karakteri ile değiştirmek istiyorum. ÖrneğinBir java'daki karakterler nasıl değiştirilir String?
:
String sourceCharacters = "šđćčŠĐĆČžŽ";
String targetCharacters = "sdccSDCCzZ";
String result = replaceChars("Gračišće", sourceCharacters , targetCharacters);
Assert.equals(result,"Gracisce") == true;
String sınıfı replaceAll
yöntemi kullanmak daha verimli bir şekilde bulunmaktadır mi?
Benim ilk fikirdi:
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);
Herhangi bir fikir?
Btw, UTF-8 karakterleri sorun yaratıyor, US_ASCII ile iyi çalışıyor.
elde ederim: GraA? IA¡Ae. ve btw, sadece diacritic karakterleri değil, diğer dilleri de değiştirmeyi çok isterim. bu yüzden keyfi bir haritalama için çalışan bir çözümü bilmek istiyorum. – ManBugra
Tam olarak. Sorun, aksanların bazen bir araya getirilmesi, bazen de olmaması ve karakter karakterinin yerine geçen dizgenin karıştırılmasının, aslında iki karakterin olmamasından dolayı karıştırılmamasıdır. –
@Mr. Parlak ve Yeni: evet, System.out.println ("š" .toCharArray(). Uzunluk); çıkışlar '2' – ManBugra