我想验证传出的字符串。规则是它们必须是 UTF-16 及以下。
如何检查字符是否是有效的 UTF-16 字符?我可以通过某种 Java 方法或正则表达式来做到这一点吗?
感谢您的信息
最佳答案
Java 中的任何 char
始终是有效的 UTF-16。但字符序列可能无效,即在代理对 ( http://en.wikipedia.org/wiki/UTF-16 ) 中,较高的代理字符后面必须跟着较低的代理字符。如果这就是你的意思那么你可以尝试这个功能
static boolean isValidSequence(char[] a) {
for (int i = 0; i < a.length; i++) {
if (Character.isHighSurrogate(a[i])) {
if (i < a.length - 1 && Character.isLowSurrogate(a[i + 1])) {
i++;
} else {
return false;
}
} else if (Character.isLowSurrogate(a[i])) {
return false;
}
}
return true;
}
关于java - 如何检查字符是否为UTF-16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17025150/