您可以利用java.text.Normalizer http://java.sun.com/javase/6/docs/api/java/text/Normalizer.html和一个正则表达式来摆脱变音符号 http://en.wikipedia.org/wiki/Diacritic其中存在much比您迄今为止收集的还要多。
这是一个SSCCE http://sscce.org,在 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();