相关疑难解决方法(0)

如何删除Java中的代理字符?

我面临的情况是我在文本中获取Surrogate字符,我将保存到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();
}
Run Code Online (Sandbox Code Playgroud)

java string surrogate-pairs

14
推荐指数
2
解决办法
5927
查看次数

标签 统计

java ×1

string ×1

surrogate-pairs ×1