如何在Java中删除代理字符?
2022-09-04 02:14:54
我面临着一种情况,即我在文本中获取代理字符,我正在将其保存到MySql 5.1。由于 UTF-16 不受支持,因此我想在将其保存到数据库之前,先通过 java 方法手动删除这些代理项对。
我现在已经编写了以下方法,我很好奇是否有直接和最佳的方法来处理这个问题。
提前感谢您的帮助。
public static String removeSurrogates(String query) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < query.length() - 1; i++) {
char firstChar = query.charAt(i);
char nextChar = query.charAt(i+1);
if (Character.isSurrogatePair(firstChar, nextChar) == false) {
sb.append(firstChar);
} else {
i++;
}
}
if (Character.isHighSurrogate(query.charAt(query.length() - 1)) == false
&& Character.isLowSurrogate(query.charAt(query.length() - 1)) == false) {
sb.append(query.charAt(query.length() - 1));
}
return sb.toString();
}