iOS NSString 获取中文字符串长度

ChatGPT 3.5 国内中文镜像站免费使用啦

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> Object-C 基础

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> Object-C 线程

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> OpenGL ES

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> GPUImage

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> AVFoundation

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> CocoaPods


一.NSString 获取字符串长度

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:iOS NSString 获取字符串长度
//@Time:2021/09/12 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/


//常规字符串
NSString* str = @"www.codersrc.com";
NSLog(@"str = %@ len = %d",str,[str length]);

//包含空格
NSString* str = @"ww w.c odersrc.com";
NSLog(@"str = %@ len = %d",str,[str length]);

//包含中文 - 错误的获取含有中文长度方式,默认中文和英文都是一个字节
NSString* str = @"www.codersrc.com猿说编程";
NSLog(@"str = %@ len = %d",str,[str length]);
/*
str = www.codersrc.com len = 16
str = ww w.c odersrc.com len = 18
str = www.codersrc.com猿说编程 len = 20
*/

由于使用 [NSString length] 方法调用获取的长度是一个中文和一个英文都是一个字节,很明显是错误的!


二.NSString 获取含有中文的字符串长度


1.lengthOfBytesUsingEncoding

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:iOS NSString 获取字符串长度
//@Time:2021/09/12 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/

NSString* str = @"www.codersrc.com猿说编程";
NSLog(@"str = %@ len = %d",str,[str lengthOfBytesUsingEncoding : NSUTF8StringEncoding]);

/*
str = www.codersrc.com猿说编程 len = 28
*/

2.cStringUsingEncoding

该方式是先将 NSString 转 char ,然后遍历获取字符串长度,示例代码如下:

-  (int)convertToInt:(NSString*)strtemp {
    int strlength = 0;
        char *p = (char *)[strtemp cStringUsingEncoding:NSUTF8StringEncoding];
        for (int i=0; i < [strtemp lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; i++) {
            if (*p) {
                p++;
                strlength++;
            }
            else {
                p++;
            }
        }
        return strlength;
}


//调用
NSLog(@"str = %@ len = %d",str,[self convertToInt:str]);

/*
str = www.codersrc.com猿说编程 len = 28
*/

三.猜你喜欢


ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
THE END
喜欢就支持一下吧
点赞1 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容