我有一个程序通过删除任何不是字母或数字的字符来过滤字符串。该程序支持多种语言,包括中文、俄语、阿拉伯语等。程序如下:
StringBuilder strBuilder = new StringBuilder();
for (int i = 0; i < src.length(); i++) {
int ch = src.codePointAt(i);
if (Character.isLetterOrDigit(ch)) {
strBuilder.appendCodePoint(ch);
}
}
我使用codePointAt
方法通过高和低代理支持以 UTF 32 位表示的字符。我需要知道在执行过滤之前是否需要对每个字符串进行规范化?我指的是Normalizer.normalize
在执行循环之前调用该方法。如果是,Normalizer.Form
我应该使用哪个?
谢谢。