在博文:JAVA中的代码点与代码单元
最后一段给出一段代码,用于:遍历字符串,并依次查看每个代码点function void listCodePoint(String aString)
{
int codePointNum = aString.codePointCount(0,aString.length() - 1);
int i = 0;
while (i <= codePointNum)
{
int index = aString.offsetByCodePoint(0,i);
int cp = aString.codePointAt(index);
if (Charater.isSupplementaryCodePoint(cp))
i += 2;
else
i++;
}
}我感觉这段代码是不是有问题?isSupplementaryCodePoint为增补字符时,i加2。
而while循环条件时i <= codePointNum,那不是最终少遍历了代码点吗?
在UTF-16中,增补字符是由2个代码单元组成,而不是2个代码点啊。不理解,请大侠们指点。谢谢。
最后一段给出一段代码,用于:遍历字符串,并依次查看每个代码点function void listCodePoint(String aString)
{
int codePointNum = aString.codePointCount(0,aString.length() - 1);
int i = 0;
while (i <= codePointNum)
{
int index = aString.offsetByCodePoint(0,i);
int cp = aString.codePointAt(index);
if (Charater.isSupplementaryCodePoint(cp))
i += 2;
else
i++;
}
}我感觉这段代码是不是有问题?isSupplementaryCodePoint为增补字符时,i加2。
而while循环条件时i <= codePointNum,那不是最终少遍历了代码点吗?
在UTF-16中,增补字符是由2个代码单元组成,而不是2个代码点啊。不理解,请大侠们指点。谢谢。
解决方案 »
- 如何使“主线程”等待“子线程”执行结束后再继续执行?
- java finally问题-灌水的避一下,谢谢
- 一个java面试题,看看你们的会做吗?
- 一个简单问题,帮我看下我想加个限制条件不知道加到哪里?
- Java 去掉字符串空格 为什么匹配不成功
- 在数据写入文本文件后,如何实现换行?
- 一个JFrame里如何放入另一个Jframe阿???国际........
- 一个关于SMTPClient的问题
- 求教java处理pdm文件的问题
- 我需要什么才能开始编写JAVA程序?
- 怎么在一个24个字的字串中随机插入4个字
- 一个数组,大小和每个元素的值在编译时已知。设计一个算法用最快速的方式计算两个下标间所有数组元素的和
Java啊,我看《Java核心技术》时,对Java字符串中的代码点的概念不是很清楚,就百度到了问题中的那篇博文。
地址是这个,我试了下,可以打开的。
http://blog.163.com/jianhuren2005@126/blog/static/1715817120079710424106/
isSupplementaryCodePoint为ture,应该是说这个代码点是“增补字符”,需要由两个代码单元(16bit的char)存储。但i是代码点索引,如果i += 2,而while的条件是i <= 代码点个数,那就不对了吧。岂不是最终遍历的代码点个数不足codePointNum个?
while (i <= codePointNum)看来这个问题是冷门啊。没有多少人回答。或者这个东西在实际应用中极少使用到。先放在这吧。继续向后面看书了。