在处理包含中英文混合的字符串时,特别是涉及到中文字符和Ascii字符混合情况时,确需细致思考。为实现截取任意第n个字符之前的字符功能,编写了以下代码供学习参考。欢迎在有改进空间的地方留下宝贵意见。
代码实现目标:
仅显示任意指定字符之前的字符串内容。
* 示例文本:“chi红na中国发verygood”
* 思路解析:
Ascii码的最高位为0,表示每个字符占用1个字节。
GB2312码的最高位为1,表示每个字符占用2个字节。
通过判断字符的最高位是否为1,可识别中文字符。
假设要截取掉第4个字符“红”之后的文本,计算之前字符占用的字节为:1(首字符)+1(次字符)+1(再字符)+2(中文字符)=5字节。
将从第5个字节开始的1个字节修改为结束符'\0'。
假设要截取掉第8个字符“国”之后的文本,计算之前字符占用的字节为:1(首字符)+1(次字符)+1(再字符)+2(中文字符)+1(英文字符)+1(英文字符)+2(中文字符)+2(额外中文字符)=11字节。
将从第11个字节开始的1个字节修改为结束符'\0'。
温馨提示:答案为网友推荐,仅供参考