iOS中按字节截取NSString

原创 2016年08月30日 13:53:06

在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;
}


相关文章推荐

iOS 获取字符串的字节长度

- (int)convertToByte:(NSString*)str { int strlength = 0; char* p = (char*)[str cStringUsingE...
  • soindy
  • soindy
  • 2015年02月12日 14:39
  • 4606

iOS根据字节数截取字符串

最近项目有个需求,文章的作者最多显示7个中文字,英文字符算半个中文字,超过7个中文字,则显示:前7个中文字+...,使用NSString的length方法,不管是一个中文还是英文字符,都是返回1。因此...

iOS byte byte数组的相关操作

1   截取byte[]中一部分数据,从begin 开始,长度是 count  - (void)bytesplit2byte:(Byte[])src orc:(Byte[])orc ...
  • Erice_e
  • Erice_e
  • 2016年08月02日 14:27
  • 9605

iOS byte截取 socket解析

iOS byte数组的 截取 socket数据解析最近在做socket长连接。遇见一些问题,希望给各位砖友一些参考的信息遇见的第一个问题: 返回的socket数据用NSASCIIStringEnc...
  • Erice_e
  • Erice_e
  • 2016年07月20日 15:30
  • 2013

NSString字符串截取三种方法

1.定义一个字符串a, 截取a 的某一个项目组,复制给b, b必须是int型   NSString *a = @"1.2.30";     int  b= [[a substringWit...

iOS中英文混排,获取字符串长度(中文字符数)

将一个NSString类型字符串获取的长度转换成类似ASCII编码的长度,如汉字2个字节,英文以及符号1个字节这个功能。 用一个char*类型的字符串,然后自己遍历一遍,将它整理为类似ASCII编码...

ios 字符串分割

Objective-C里核心的处理字符串的类就是NSString和NSMutableString这两个类,这两个类完成了Objective-C中字符串大部分功能的处理。这两个类的最主要的区别是NSSt...

IOS NSString 字符串的几种截取方式

1//定义一个字符串a, 截取a 的某一个部分,复制给b, b必须是int型            NSString *a = @"1.2.30";            int  b= [[a ...

NSInteger转Byte字节

//服务器返回result result = {     message = "\U83b7\U53d6\U6210\U529f";     randnum = 6;     result =...

ios 中Nsstirng,Nsdata,char,byte,UIImage 之间的转换

object-c 继承于c语言,因此最基础的数据之间的转换自然也成为oc 的基础。下面记录一下这些数据之间转换的具体方法。1.NSData 与 NSStringNSDate->NSStringNSSt...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS中按字节截取NSString
举报原因:
原因补充:

(最多只允许输入30个字)