我想验证传出字符串。规则是它们必须是UTF-16及以下。
如何检查字符是否为有效的UTF-16字符?可以用Java方法或正则表达式吗?
Thanks for info
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;
}
你也可以看看这个函数http://www.java2s.com/Code/Java/Development-Class/ReturnscodetrueifthespecifiedcharactersequenceisavalidsequenceofUTF16charvalues.htm