OC中的字符串

1.字符串概述

字符串对象分为可变字符串和不可变字符串,在使用一个字符串对象之前,首先是创建以及初始化该对象

2.字符串相关有用的数据类型

        NSRange range = NSMakeRange(10, 3);

        NSRange range;
        range.location = 10;
        range.length =3;

        NSRange range = {10,3};

3.创建字符创

创建字符串对象

        //1.初始化一个字符串对象
        NSString *string1 = @"ibokanwisdom";
        NSString *string2 = [NSString stringWithFormat:@"Jack"];
//        NSString *string3 = [NSString stringWithFormat:@"%@%@",@"Jack",@"Rick"];
//        NSString *string3 = [[NSString alloc] initWithString:@"ibokanwisdom"];

        //使用NSString的类方法来创建字符串 + (instancetype)stringWithFormat:@"格式化标识符"
        NSString *string4 = [NSString stringWithFormat:@"%@,%d,%f,hi guy",@"Rick",5,5.5];//可以接收多个字符串
//        NSLog(@"string4 = %@",string4);

        NSString *string5 = @"Rick";
        NSString *string6 = @"666";
        NSString *string7 = [NSString stringWithFormat:@"%@%@",string5,string6];
        NSLog(@"%@",string7);

读取本地文件路径与网络字符串

        //从本地文件读取字符串
        NSString *path1 = @"/Users/apple/Desktop/OC_04_02/hello.html";
        NSError *error;
        NSString *string8 = [NSString stringWithContentsOfFile:path1 encoding:NSUTF8StringEncoding error:&error];
//        NSLog(@"string8 = %@, error = %@",string8,error);

        //从网络读取字符串
        NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
        error = nil;
//        NSString *string9 = [NSString stringWithContentsOfURL:url encoding:4 error:&error];
//        NSLog(@"string9 = %@",string9);

4.NSString的常用方法

        //字符串的操作
        NSString *string10 = @"你是逗比么,我都受不了你了";

        //字符串长度
        NSUInteger length = string10.length;
        NSLog(@"%lu",length);
        //字符串的截取
        NSString *subString1 = [string10 substringToIndex:5];   //获取字符串开头到字符串的to的位置的字符串内容,不包括to位置的字符串
        NSLog(@"subString1 = %@",subString1);

        NSString *subString2 = [string10 substringFromIndex:6]; //获取字符串从from的位置到结尾的字符串,包括from 的位置
        NSLog(@"%@",subString2);

        NSString *subString3 = [string10 substringWithRange:NSMakeRange(2, 2)];

        //获取字符串中的某个字符
        NSString *string11 = @"abcdefg";
        char c = [string11 characterAtIndex:0]; //根据字符串中的位置 index来获得一个字符,注意字符串的索引是从 0 开始。
        NSLog(@"%c",c);
//字符串的比较,如何判断两个字符串是否相等
        if (subString2 == subString3) {
            //内容和指针都相等的时候,才成立
            NSLog(@"subString2 和 subString3 相等");
        }
        else{
            NSLog(@"subString2 和 subString3 不相等");
        }

        /*
         如何让两个字符串的指针 和 内容都相同?

         浅拷贝 和 深拷贝
         浅拷贝:对象和拷贝的内容公用一份实体,仅仅是引用的变量名称不一样。
         深拷贝:源对象和拷贝的对象相互独立,其中任何一个对象的改动都不会对另一个对象造成影响。
         */

        NSString *subString4 = [NSString stringWithString:subString2];
        //stringWithString 为浅拷贝
        if (subString4 == subString2) {
            //内容和指针都相等的时候,才成立
            NSLog(@"subString4 和 subString2 相等");
        }
        else{
            NSLog(@"subString4 和 subString2 不相等");
        }

        //在实际开发过程中,我们通常只需要比较两个字符串的内容是否想相等
        if ([subString2 isEqualToString:subString4]) {

            NSLog(@"subString4 和 subString2 内容相等");
        }
        else{

            NSLog(@"subString4 和 subString2 内容不相等");
        }

        //比较两个字符串的大小
        NSString *cmpString1 = @"hehehehe";
        NSString *cmpString2 = @"hahaha";

        //C p143
        NSComparisonResult result = [cmpString1 compare:cmpString2];
        switch (result) {
            case NSOrderedAscending: {
                NSLog(@"cmpString1 < cmpString2,升序");
                break;
            }
            case NSOrderedSame: {
                NSLog(@"cmpString1 = cmpString2");
                break;
            }
            case NSOrderedDescending: {
                NSLog(@"cmpString1 > cmpString2,降序");
                break;
            }
        }

        //根据字符串拿到对应的range
        NSRange range = [string10 rangeOfString:@"逗比"];
        NSLog(@"%@",[NSValue valueWithRange:range]);

        //只输出第一个遇到该字符串的位置 及 该字符串的长度
        NSRange range1 = [string10 rangeOfString:@"你"];
        NSLog(@"%ld,%ld",range1.location,range1.length);


        //判读字符串中是否有xx前缀 或 xx后缀
        NSString *string12 = @"http://www.baidu.com";

        if ([string12 hasPrefix:@"http://"]) {

            NSLog(@"含有此前缀");
        }
        else{
            NSLog(@"不含有此前缀");
        }

        //判断是否为 .jpg 或 .png 后缀
        NSString *string13 = @"xxxxx.jpg";
        if ([string13 hasSuffix:@"jpg"] || [string13 hasSuffix:@"png"] ) {

            NSLog(@"包含此后缀");
        }
        else{
            NSLog(@"不包含此后缀");
        }

        //字符串 拼接
        NSString *string14 = @"www.baidu.com";

        NSString *string15 = [@"http://" stringByAppendingString:string14];


        //http://static.bigstockphoto.com/images/homepage/2016_popular_photo_categories.jpg
        NSString *string16 = @"http://static.bigstockphoto.com";
        NSString *string17 = @"images/homepage/2016_popular_photo_categories.jpg";

        NSString *string18 = [string16 stringByAppendingFormat:@"/%@",string17];    //连接两个字符串,并且第二个字符串是按一定格式传进来的

        NSString *string19 = [string16 stringByAppendingPathComponent:string17];

        NSString *imagePath = @"http://static.bigstockphoto.com/images/homepage/2016_popular_photo_categories.jpg";

        imagePath = [imagePath lastPathComponent];

        NSString *theImageName = @"Rick";
        theImageName = [theImageName stringByAppendingPathExtension:@"png"];


       //字符串的其他常用方法
        //1.字符串的转换函数
        NSString *str = @"111addd33";
        int a1 = [str intValue];
        NSLog(@"%d",a1);

        //2.字符串的大小写转换
        NSString *str2 = @"aAabb";
        NSString *str3 = [str2 uppercaseString];    //将字符全部改成大写
       NSString *str4 = [str3 lowercaseString];  //将字符全部改成小写
       NSString *str5 = [str4 capitalizedString];

       NSString *str6 = [str2 stringByReplacingOccurrencesOfString:@"bb" withString:@"dd"];

       NSString *str7 = [str2 stringByReplacingCharactersInRange:NSMakeRange(1, 2) withString:@"GG"];

        NSString *str8 = @"aa-bb-cc-dd-ee";
        NSArray *array = [str8 componentsSeparatedByString:@"-"];

        //以separator 为分割符,将原字符串内容进行分割,分割得到的结果放到一个数组里面,作为返回值

5.可变字符串

//        NSMutableString 可变字符串
        NSMutableString *mString = [NSMutableString stringWithString:@"nihao"];

        NSMutableString *mString1 = [NSMutableString stringWithFormat:@"%@",mString];

        NSMutableString *mString2 = [NSMutableString stringWithContentsOfFile:@"" encoding:4 error:nil];

        NSMutableString *mString3 = [NSMutableString stringWithContentsOfURL:[NSURL URLWithString:@""] encoding:NSUTF8StringEncoding error:nil];

        //可变字符串独特的初始化方法,初始化一个空间为100的可变字符串
        NSMutableString *mString4 = [[NSMutableString alloc] initWithCapacity:100];

        //将C语言的字符串转换成OC的字符串
//        [[NSString alloc] initWithCharacters:<#(nonnull const unichar *)#> length:<#(NSUInteger)#>]

        NSMutableString *targetString = [NSMutableString stringWithString:@"呵呵,我靠"];
        NSRange range = [targetString rangeOfString:@"靠"];

        //替代
        [targetString replaceCharactersInRange:range withString:@"**"];

        //增
        //在指定位置去插入一个字符串
        [targetString insertString:@"ee" atIndex:3];

        //在字符串末尾添加一个字符串
        [targetString appendString:@"aaa"];

        //在字符串的末尾添加多个字符串
        [targetString appendFormat:@"%@%@",@"cc",@"dd"];

        //删
        [targetString deleteCharactersInRange:NSMakeRange(3, 2)];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值