iOS语法篇-NSString NSMutableString

版权声明:允许自己一步一步成长,只要每天都有收获,不求多,只求吸收.交流QQ群:52795427 https://blog.csdn.net/JackJia2015/article/details/79887685

NSString 是一个不可变的字符串对象。这不是表示这个对象声明的变量的值不可变,而是表示它初始化以后,你不能改变该变量所分配的内存中的值,但你可以重新分配该变量所处的内存空间。而NSMutableString是可变的,意味着你可以追加它的内存空间,或者修改它所分配的内存空间中的值。

OC字符串
NSString *str1 = @”hello world”;
NSString *str2 =[ [NSString alloc]initWithFormat:@”xiaoming %@”,str1];

常用的替换符

  • %@ NSString实例
  • %d,%D,%i 整数
  • %4d,%4D,%4i 格式化整数
  • %ld,%lD,%li 长整数
  • %u,%U 无符号整数
  • %x 将无符号整数以十六进制小写字母显示
  • %X 将无符号整数以十六进制大写字母显示
  • %f 小数
  • %c 字符
  • %s C语言字符串
  • %% 显示%字符本身

C语言字符串
char *str = “hello world”; OC兼容C语言的字符串

一.创建字符串

        //对象方法 "-"
        //(1)声明一个常量字符串
        NSString *str1 = @"hello world";
        //(2)通过已知字符串,生产一个新的字符串
        NSString *str2 = [[NSString alloc]initWithString:str1];
        //(3)用一个c语言字符串生成一个OC
        NSString *str3 = [[NSString alloc]initWithUTF8String:"hello world"];
        //(4)格式化创建字条串生成一个新的字符串,可以拼接
        NSString *str4 =[ [NSString alloc]initWithFormat:@"xiaoming %@",str1];
        //(5)先初始化的理论用法
        NSString *str5 = [NSString new];
        str5 = @"hello world";


        //类方法 "+"创建
        NSString *str6 = [NSString stringWithString:str1];
        NSString *str7 = [NSString stringWithUTF8String:"hello world"];
        NSString *str8 = [NSString stringWithFormat:@"xiaoming %@",str1];

二.NSString字符串长度计算(length方法)

        NSString *str = @"siebel workroom";
        NSUInteger len = [str length];
        NSLog(@"str length:%ld",len);   //一定是%ld

三.判断两个字符串是否相同

        BOOL ret = [str1 isEqualToString:str2];

四.比较字符串

        //NSComparisonResult是个枚举,NSOrderedAscending(升序「-1」),NSOrderedSame「0」,NSOrderedDescending(降序「1」) 可做判断
        NSComparisonResult result = [str1 compare:str4];
        if (result == NSOrderedAscending) {
            NSLog(@"str4>str1");
        }
        NSLog(@"%ld",result);    //打印结果为-1(升序)

        /*compare 常用的3个条件: NSCaseInsensitiveSearch:不区分大小写字符 NSLiteralSearch:进行完全比较,区分大小写(默认) NSNumericSearch:比较字符串的字符个数,而不是字符值 */
        NSString *str11 = @"abc";
        NSString *str12 = @"Abc";
        //可以添加多个比较条件
        NSComparisonResult result1 = [str11 compare:str12 options:NSCaseInsensitiveSearch|NSNumericSearch];
        NSLog(@"%ld",result1); //打印结果为0

五.截取

        //通过字符串切割得到新的字符串 要前面的
        NSString *str13 = [str1 substringFromIndex:6];
        NSLog(@"%@",str13);//打印world
        //要后面的
        NSString *str14 = [str1 substringToIndex:6];
        //指定范围截取
        NSString *str15 = [str1 substringWithRange:NSMakeRange(6, 2)];//6开始 向后2位
        //字符串出现位置  空格不算位置 range 结构体变量
        NSRange range = [str1 rangeOfString:@"world"];
        NSLog(@"%lu %lu",(unsigned long)range.location,(unsigned long)range.length);

六.NSString字符串前后缀检查

        NSString *url = @"https://ios,itcast.cn";
        //检测一个字符串的前缀是否是http://或者https://开头 //[str hasPrefix:@"要检测的内容"];
        if ([url hasPrefix:@"http://"]||[url hasPrefix:@"https://"])
        {
            NSLog(@"这是一个网址");

        }else{
            NSLog(@"这不是一个网址");
        }
        //后缀
        NSString *imgName = @"xxxxx.jpg";
        //检测一个字符串的后缀是否是.jpg //[str hasSuffix:@"要检测的内容"];
        if ([imgName hasSuffix:@".jpg"]) {
            NSLog(@"这是一个jpg图片");
        }else{
            NSLog(@"这不是一个jpg图片");
        }

七.NSString字符串的替换

        NSString *str16 = [str1 stringByReplacingOccurrencesOfString:@"world" withString:@"世界"];
        NSLog(@"%@",str16);

八.NSString和其他类型的转换

        NSString *str17 = @"1";
        int a = 19;
        //把字符串类型转换成其他类型
        int b = [str intValue];  //intValue,floatValue,doubleValue
        int sum = a+b;

        //OC字符串和C字符串的互相转换
        char *s = "zhangsanfeng";
        NSString *str20 = [NSString stringWithUTF8String:s];  //相反的用[str2 UTF8String]
        NSLog(@"str = %@",str);

九.NSString去除首尾空格

        /*
         controlCharacterSet去头尾空格
         lowercaseLetterCharacterSet去头尾小写字母
         uppercaseLetterCharacterSet去收尾大写字母
         + (NSCharacterSet *)characterSetWithRange:(NSRange)aRange;去头尾制定位置字母
         */
        NSString *str18 = @"    hello     world   ";
        NSString *str19 = [str1 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];//返回去除后的字符串
        NSLog(@"%@",str18);
        NSLog(@"%@",str19);

NSMutableString

NSMutableString类的创建方式和NSString的创建方式差不多,只是有一点需要注意,NSMutableString不能使用直接方式去创建,因为直接方式创建的字符串都是在常量池中,而常量池中的值都是不可变的,所以不能创建的,同时initWithString创建出来的字符串也是不在常量池中的。

        //NSMutableString *str21 = @"错误初始化,可变"
        NSMutableString *str21 = [[NSMutableString alloc]initWithString:str1];
        NSMutableString *str22 = [NSMutableString stringWithString:str1];
        NSMutableString *str23 = [[NSMutableString alloc]initWithUTF8String:"hello"];
        NSMutableString *str24 = [NSMutableString stringWithUTF8String:"hello"];
        NSMutableString *str25 = [[NSMutableString alloc]initWithFormat:@"%@ world",str1];
        NSMutableString *str26 = [NSMutableString stringWithFormat:@"%@ world",str1];

增 追加字符串,不会产生新的对象

        [str21 appendString:@"xxxx"];
        [str22 appendFormat:@"%@,%c",str21,'o'];
        NSLog(@"%@",str21);
        [str21  insertString:@"###" atIndex:5];
        NSLog(@"%@",str21);

        NSMutableString *str27 = [NSMutableString stringWithString:@"hello"];
        [str27 deleteCharactersInRange:NSMakeRange(1, 3)];
        NSLog(@"%@",str27);

改 替换

        NSMutableString *str28 = [NSMutableString stringWithString:@"hello"];
        NSRange ranges = [str28 rangeOfString:@"ll"];//先查找出需要替换字符串的范围
        [str28 replaceCharactersInRange:ranges withString:@"ee"];
        NSLog(@"%@",str28);

        NSString *str29 = @"can you \n speak English";
        NSString *str30 = @"\n";
        //在str1这个字符串中搜索\n,判断有没有
        if ([str29 rangeOfString:str30].location != NSNotFound) {
            NSLog(@"这个字符串中有\n");
        }
        //rangeOfString 前面的参数是要被搜索的字符串,后面的是要搜索的字符
        //NSNotFound 表示请求操作的某个内容或者item没有发现,或者不存在

猜你喜欢

转载自blog.csdn.net/JackJia2015/article/details/79887685