OC_06字符串

这一章我们来学习一下,字符串。
字符串分为:可变字符串和不可变字符串。
首先,我们来看NSString 不可变字符串的用法

 //1.初始化一个字符串对象        
// NSString *string1 = @"iBokanWisdom";
   NSString *string2 = [NSString stringWithFormat:@"WeiJian"];

//NSString *string3 = [NSString stringWithFormat:@"%@,%@",@"ZhiJie",@"WeiJian"];
//        NSString *string3 = [[NSString alloc]initWithString:@"iBokanWisdom"];   redundant 多余

//使用NSString的类方法来创建字符串 + (instancetype)stringWithFormat :@“格式化标示符”
        NSString *string4 = [ NSString stringWithFormat:@"%@,%d,%f,hi guy",@"Jack",5,6.7];
// NSLog(@"%s",__func__);
   NSLog(@"%@",string2);
//NSLog(@"%@",string4);

NSString *string5 = @"Barry";
NSString *string6 = @" is so handsome!";
NSString *string7 = [NSString stringWithFormat:@"%@%@",string5,string6];
        NSLog(@"%@",string7);

// lldb   用po 对象  就可以打印出来了

//从本地文件读取字符串
        NSString *path1 = @"/Users/ibokan/Desktop/OC_X/OC_06_01/OC_06_01/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);

//字符串的操作
        NSString *string10 = @"你们都是怪兽么,我是超人啊!";

//字符串长度
 NSUInteger length =  [string10 length];

//字符串的截取

NSString *subString1 =  [string10 substringToIndex:6];
        NSLog(@"subString1 = %@",subString1);  //获取开头到此位置的字符串,不包括to的位置,如6,不包括第6位
        NSString *subString2 = [string10 substringFromIndex:8]; //获取从此字符开始到结尾,包含from位置
        NSLog(@"%@",subString2);

NSString *substring3 =   [string10 substringWithRange: NSMakeRange(4, 2) ];//  (第N个字符串,字符串长度)

//如何获取字符串中的某个字符
        NSString *string11 = @"abcdefg";
        char c  = [string11 characterAtIndex:0]; // 根据字符串中的位置
        //index来获得一个字符,注意字符串的索引是从0开始。
        NSLog(@"%c",c);

//判断两个字符串是否相等
        if (subString2 == substring3) {    //内容和指针都相等的时候才相等
            NSLog(@"subString2 和 substring3 相等");
        }
        else{
            NSLog(@"subString2 和 subString3 不相等");
        }
    /*
        如何让两个字符串的指针 和 内容都相同?

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

*/

     NSString *subStirng5 = [NSString stringWithFormat:@"%@",subString2];

NSString *subString4 = [NSString stringWithString:subString2];
        if (subString2 == subString4) {    // 内容和指针都相同
            NSLog(@"subString4 和 subString2 相等");
        }
        else{
            NSLog(@"subString4 和 subString2 不相等");
        }
        //在实际开发过程中,我们通常只需要比较两个字符串的内容是否相等
        if ([subString2 isEqualToString:subString4]) {
            NSLog(@"subString4 和 subString2 内容相等");
        }
        else{
            NSLog(@"subString4 和 subString2 内容不相等");
        }
        //比较两个字符串的大小
        NSString *cmpString1 = @"hehehehe";
        NSString *cmpString2= @"hahahaha";

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"]||[string13 hasSuffix:@".bmp"]){
            NSLog(@"含有此后缀");
        }
        else
        {
            NSLog(@"不含有此后缀");
        }
    //字符串  拼接
    NSString *string14 = @"www.baidu.com";
//    [NSString stringWithFormat:@"http://%@",string14];
    NSString *string15 =  [@"http://" stringByAppendingString:string14];
//    http://pic.pptbz.com/pptpic/201204/2012041411433867_S.jpg
    NSString *string16 = @"http://";
    NSString *string17 = @"pic.pptbz.com/pptpic/201204/2012041411433867_S.jpg";
    NSString *string18 = [string16 stringByAppendingFormat:@"%@",string17];
    //连接两个字符串 ,并且第二个字符串是按一定格式传进来的

NSString *string19 =  [string16 stringByAppendingPathComponent:string17];
    NSString *imagePath = @" http://pic.pptbz.com/pptpic/201204/2012041411433867_S.jpg";
    //图片自己随便找吧!~图片路径复制
    imagePath =  [imagePath lastPathComponent];

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

//字符串的其他用法
        //1.字符串的转换函数
        NSString *str = @"111addd33";
        int a1 = [str intValue];
        NSLog(@"%d",a1);  //只会输出 111   若第一个是字母,输出 0

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

NSString *str6 = [str2 stringByReplacingOccurrencesOfString:@"Bb" withString:@"Dd"];//将Bb换Dd
        NSString *str7 = [str2 stringByReplacingCharactersInRange:NSMakeRange(1, 2) withString:@"GGG"];
        //多个GGG直接插入
        NSString *str8 = @"aa-bb-cc-dd-ee";
        NSArray *array =  [str8 componentsSeparatedByString:@"-"]; //以separator 为分隔符,将原字符串的内容进行分割,分割得到的结果放到一个数组里,作为返回值
 }
    return 0;
}

好,学习完不可变字符串的基本用法,我们来看看 可变字符串。

//NSMutableString 可变字符串
NSMutableString *mString = [NSMutableString stringWithString:@"hello"];  //创建字符串初始化赋值 stringWithString

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

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

NSMutableString *mString3 = [NSMutableString stringWithContentsOfURL:@"" encoding:4 error:nil];

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

//将C语言的字符串转换成OC的字符串
//        NSMutableString *mString5 = [[NSString alloc]initWithCharacters:<#(const unichar *)#> length:<#(NSUInteger)#>]
        NSMutableString *targetString =[NSMutableString stringWithString:@"呵呵,我靠"] ;
        NSRange range = [targetString rangeOfString:@"靠"];

//替代
       [targetString replaceCharactersInRange:range withString:@"*"];
        NSLog(@"%@",targetString);
//增
//在指定位置去插入一个字符串
        [targetString insertString:@"haha" atIndex:3];
//在字符串末尾添加一个字符串
        [targetString appendString:@"Your mother boom"];
//在字符串的末尾添加多个字符串
        [targetString appendFormat:@"%@%@%@",@"Your father booom",@"Your brother boom",@"WeiJian boom"];

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

//        NSLog(@"%@",targetString);
}
    return 0;
}
    运行结果大家就直接打印或者断点po一下就出来了,在这,我就不为大家截图了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值