Вы можете использовать java.text.Normalizer
и порцию регулярных выражений, чтобы избавиться от диакритических знаков , которых существует на много больше, чем вы собрали как далеко.
Вот SSCCE , скопируйте и вставьте его на Java 6:
package com.stackoverflow.q2653739;
import java.text.Normalizer;
import java.text.Normalizer.Form;
public class Test {
public static void main(String... args) {
System.out.println(removeDiacriticalMarks("Gračišće"));
}
public static String removeDiacriticalMarks(String string) {
return Normalizer.normalize(string, Form.NFD)
.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
}
Это должно дать
Gracisce
По крайней мере, здесь, в Eclipse, кодировка символов консоли установлена в UTF-8 ( Окно> Настройки> Общие> Рабочая область> Кодировка текстовых файлов ). Убедитесь, что то же самое установлено и в вашей среде.
В качестве альтернативы можно сохранить Map<Character, Character>
:
Map<Character, Character> charReplacementMap = new HashMap<Character, Character>();
charReplacementMap.put('š', 's');
charReplacementMap.put('đ', 'd');
// Put more here.
String originalString = "Gračišće";
StringBuilder builder = new StringBuilder();
for (char currentChar : originalString.toCharArray()) {
Character replacementChar = charReplacementMap.get(currentChar);
builder.append(replacementChar != null ? replacementChar : currentChar);
}
String newString = builder.toString();