中英文字符串中统计英文字符个数

工作中遇到如下问题,搜索网络资源得以解决,记录以供参考。

问题:在一段中英文混合的字符串中,通过关关键字查找到某位置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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值