在iOS中字符串的截取一般都是按字符长度进行截取的,一般用到的方法就是NSString的subStringToIndex方法,但是现在需要按照字节去进行截取(因为汉字占两个字节,英文字符占一个字节)。于是,自己写了两个NSString的类目(扩展方法),用于按字节截取NSString。
//计算字符串的字节数(汉字占两个)
- (int)getByteNum;
//从字符串中截取指定字节数
- (NSString *)subStringByByteWithIndex:(NSInteger)index;
- (int)getByteNum{
int strlength = 0;
char* p = (char*)[self cStringUsingEncoding:NSUnicodeStringEncoding];
for (int i=0 ; i<[self lengthOfBytesUsingEncoding:NSUnicodeStringEncoding] ;i++) {
if (*p) {
p++;
strlength++;
}
else {
p++;
}
}
return strlength;
}
- (NSString *)subStringByByteWithIndex:(NSInteger)index{
NSInteger sum = 0;
NSString *subStr = [[NSString alloc] init];
for(int i = 0; i<[self length]; i++){
unichar strChar = [self characterAtIndex:i];
if(strChar < 256){
sum += 1;
}
else {
sum += 2;
}
if (sum >= index) {
subStr = [self substringToIndex:i+1];
return subStr;
}
}
return subStr;
}