• OC-NSString


    Foundation/NSString.h
    字符串常量从程序的执行开始到终止一直存在调用release方法或垃圾回收都不能释放
    NSString代表不可变的字符串对象 不能通过增删改来改变他
    字符串内部使用Unicode编码
    NSString是以类簇的方式(class cluster)可以看作工厂类

    定义方式

     NSString *a = @"abc";
    
    • 1

    编译器会将用空格分割的字符串连接在一起

    拼接字符串

    stringByAppendingFormat 可以拼接多种字符串

           NSString *a = @"abc";
            NSString *c = @"zzzz";
            NSString *b = [a stringByAppendingFormat:@"第一个参数: %@ 第二个参数%@",@12,c];//abc第一个参数: 12 第二个参数zzzz
    
    • 1
    • 2
    • 3

    -(NSUInteger)length 获取长度

    返回字符串中Unicode编码的字符的个数 不能用这个函数的返回值来计算需要的字节数 因为他返回的是字符的个数 但是你并不知道一个字符占用几个字节

    componentsJoinedByString 通过指定符号拼接字符串

    NSArray* array = @[@"a",@"b",@"c"];
    NSString *string = [array componentsJoinedByString:@"-"];
    NSLog(@"%@",string);
    
    • 1
    • 2
    • 3

    查找字符串

    rangeOfString //从string里面找字符串并返回range形式变量

    找到了 就返回{location,length}
    没找到 返回{NSNotFound,0}

    NSString *string = @"0123456789abc";
    NSRange range = [string rangeOfString:@"34"];
    NSLog(@"@",NSStringFromRange(range));//{3,2} 第三个位置 两个字符
    NSRange range = [string rangeOfString:@"Ab" options:NSCaseInsensitiveSerch];//添加参数 这个是可以区分大小写
    
    • 1
    • 2
    • 3
    • 4

    分割字符串

    componentsSeparatedByString 通过指定符号分割

    NSString *string = @"sbcd-efht-defagfds";
    NSArray *array = [string componentsSeparatedByString:@"-"];
    NSLog(@"array = %@",array);//array = (sbcd,efht,defagfds)
    
    • 1
    • 2
    • 3

    substringWithRange 通过range分割字符串

    NSString *string = @"0123456789abc"
    NSRange range  ={3,8};
    NSString *newString = [string substringWithRange:range];//从第3位开始拿八个 3456789a
    
    • 1
    • 2
    • 3

    删除字符串

    stringByTrimmingCharactersInSet: 删除特殊符号 常用来去空格

    NSString * string = @" abcd ";
    string = [string stringByTrimmingCharactersInSet:NSCharacterSet whitespaceCharacterSet];//abcd whitespaceCharacterSet是空格

    替换字符串

    stringByReplacingOccurrencesOfString:withString: 将指定字符串a替换成指定字符串b

    NSSstring string = @“lixun”;
    NSString *newString = [string stringByReplacingOccurrencesOfString:@"li"withString:@“liu”];将li字符串替换成liu

    stringByReplacingCharactersInRange:withString:

    NSString * string = @“aaaaaaannnnnnn”;
    NSRange range = {4,3};
    string = [string stringByReplacingCharactersInRange:range withString:@“qqqqqqqq”];//表示在第四个位置将3个字符替换成qqqqqqqqq //aaaqqqqqqqqannnnnnn

    字符串比较

    NSString *string1 = @“abc”;
    NSString *string2 = @"ABC";
    NSComparisonResult rs = [string1 compare:string2];
    if(rs == NSOrderedAscending){NSLog(@"string1)};
    else if(rs == NSOrderedSame){NSLog(@"string1 = string2")};
    else{NSLog(@"string1>string2")}; 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    关于UTF-8的解码方式

    因为ASCII只是单纯的用一个字节表示一个字符导致很多国家的文字是没办法被表示出来的
    所以发明了unicode编码 unicode编码有多种编码方式 UTF-8 UTF-16 UTF-32
    UTF-8的最大特点是可变长 用1-4个字节表示
    1.当只用单字节表示 第一位设为0 后面7位对应这个字符的Unicode码
    2.对于需要使用N个字符的来表示(N>1)第一个字节的前N位都设为1 第N+1位设为0
    剩余字节的前两位都设为10
    这样如果第一位是0则说明一个字节对应一个字符 如果第一位是1 则看有多少个连续的1则表示一个字符占用了多少个字节

    0xxxxxxx
    110xxxxx 10xxxxxx
    1110xxxx 10xxxxxx 10xxxxxx
    11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    VIM中如何自动补全括号
    文件的操作方法
    aws elastic beanstalk入门之使用 node.js
    Cypher语句查询neo4j数据库教程
    jvm虚拟机学习一class文件
    程序员失业日记1:工作五年,交接半天
    C语言练习百题之#include应用
    Redis(位图Bitmap和位域Bitfield)
    headscale的部署方法和使用教程
    【SUMO】初级 Public Transport - 1
  • 原文地址:https://blog.csdn.net/qq_43535469/article/details/126069044