工作中遇到如下问题,搜索网络资源得以解决,记录以供参考。
问题:在一段中英文混合的字符串中,通过关关键字查找到某位置P。需要截取P前后一定长度字符,构成一个新的字符串。
问题解析:由于是中贡混合的字符串,当向前后截取长度不当时会出现截取到中文半个字的情况。面引起出现乱码的情况。
方法:
首先确定字符串的编码格式,由于中文字符utf8编码时占用3位,而gbk时当用2位。
其次由于英文字符ASCII的范围是1到128
思路:1、统计出截取字符串中英文字符的字数,从面得到中文字符占用的位数。
2、判断中文字符占用的位数能否除(3或2),能则是完整的中文字,否则,则不是完整的,需要减去除(3或2)之后的余数长度。
int string Is_char(string str)
{
int count=0;
for(int i=0;i<str.lenght();i++)
{
char c=str[i];
if(c>=1&&c<=128)
count++;
}
return (str.lenght()-count)%3;
}