“ unipre字符”的定义含糊不清,但是将被视为表示标准ISO
8859字符集未涵盖的UTF-8
字符。如果您的情况是这样,那么请遍历String中的所有字符并测试其代码点以确定它是否在给定的字符集中。
或者,
Map<Character, Character>在地图中使用和字符,其中包含匹配键。例如:
Map<Character, Character> charReplacementMap = new HashMap<Character, Character>() {{ put('Ü', 'Y'); // Put more here.}};String originalString = "AÜAÜ";StringBuilder builder = new StringBuilder();for (char currentChar : originalString.toCharArray()) { Character replacementChar = charReplacementMap.get(currentChar); builder.append(replacementChar != null ? replacementChar : currentChar);}String newString = builder.toString();
或者,您是说“所有带有变音符号的字符”吗?如果是这样,则用于
java.text.Normalizer删除变音标记:
public static String removeDiacriticalMarks(String string) { return Normalizer.normalize(string, Form.NFD) .replaceAll("\p{InCombiningDiacriticalMarks}+", "");}
有一个陷阱,Ü会变成U,而不是Y。不确定那是否是您所追求的。如果要用发音字符代替,则确实需要创建映射。当然,这是一件乏味的工作,但是完成该工作所需的时间少于您遵循此主题所需的时间。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)