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根据字节数截取字符串

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

iOS NSString的长度计算

NSString *text = @"Hello World! 你好,中国!";计算以上string的长度: NSLog(@"text.length = %lu",text.length);得到的结...
  • zhangwenhai001
  • zhangwenhai001
  • 2015年09月07日 10:28
  • 2524

iOS 获取字符串的字节长度

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

iOS byte截取 socket解析

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

对于任意字符串,按照字节数来截取字符串长度

这个题目出自java程序员面试宝典,我看了半天觉得代码有点小问题,做了点小修改,同时觉得这个题目蛮有意思,在此贴出来给大家讨论下: 描述: 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为...
  • a15994269853
  • a15994269853
  • 2014年03月05日 14:17
  • 2795

截取NSString字符中一定范围的数据

  • baohanqing
  • baohanqing
  • 2016年04月16日 09:44
  • 578

iOS 截取字符串中汉字 —— HERO博客

截取字符串中汉字,判断字符串汉字。
  • hero_wqb
  • hero_wqb
  • 2016年03月22日 22:10
  • 2174

NSString字符串截取三种方法

1.定义一个字符串a, 截取a 的某一个项目组,复制给b, b必须是int型   NSString *a = @"1.2.30";     int  b= [[a substringWit...
  • zhangjunjian127
  • zhangjunjian127
  • 2014年01月14日 14:28
  • 112034

iOS byte byte数组的相关操作

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

[iOS 字符串] 字符串后几位截取

记录一个很简单的小问题; 截取字符串有如下方法[string substringToIndex:7];//截取掉下标7之后的字符串[string substringFromIndex:2];//截取...
  • iOSTianNan
  • iOSTianNan
  • 2016年06月12日 13:38
  • 20301
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS中按字节截取NSString
举报原因:
原因补充:

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