美文网首页
深入学习Java中的字符串,代码点和代码单元

深入学习Java中的字符串,代码点和代码单元

作者: QianRay | 来源:发表于2018-02-11 15:23 被阅读0次

    在Java字符串处理时,在使用length和charAt方法时,应该格外小心,因为length返回的是UTF-16编码表示下的代码单元数量,而非我们所认为的字符的个数,charAt方法返回的是指定位置处的代码单元,而非我们所认为的字符。

    至于为什么都是“代码单元”而非字符,这和Unicode字符集的增补相关,具体的参看下面的附录。

    要想获得字符串中的字符的个数,应当使用aString.codePointCount(0, aString.length());要想获得指定位置处的字符,使用aString.codePointAt(i);需要注意codePointAt的返回值,是int而非char。

    枚举字符串的正确方法:

    
    for (int i = 0; i < aString.length();) {
    int character = aString.codePointAt(i);
    if (Character.isSupplementaryCodePoint(character)) i += 2;
    else ++i;
    }
    

    将codePoint转换为char[]可调用Character.toChars方法,然后可进一步转换为字符串:

    String s(Character.toChars(codePoint));
    

    转载地址:
    深入学习Java中的字符串,代码点和代码单元

    相关文章

      网友评论

          本文标题:深入学习Java中的字符串,代码点和代码单元

          本文链接:https://www.haomeiwen.com/subject/iroktftx.html