OC_可变和不可变字符串

不可变字符串:NSString

1.初始化一个字符串对象

 NSString *string1 = @"Leee";
 NSString *string2 = [NSString stringWithFormat:@"sb"];
//NSString *string3 = [NSString stringWithFormat:@"%@%@",@"sss",@"qqq"];
//NSString *string3 = [[NSString alloc]initWithString:@"111"]; 多余的 跟上一样
//使用NSString的类方法来创建字符串 +(instancetype)stringWithFormat:@"格式化标示符"

从本地文件读取字符串

NSString *path1 = @"/Applications/HelloWorld/OC_04_02/OC_04_02/hello.html";

NSError *error;
NSString *string8 = [NSString stringWithContentsOfFile:path1 encoding:4 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 *path1 = @"/Applications/HelloWorld/OC_04_02/OC_04_02/hello.html";

    NSError *error;
    NSString *string8 = [NSString stringWithContentsOfFile:path1 encoding:4 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 = @"r u sb ? fuck u";

字符串的长度

    NSUInteger length = [string10 length];
    NSLog(@"%lu",length);

字符串的截取

    NSString *subString1 = [string10 substringToIndex:6];
    NSLog(@"subString = %@",subString1);

取字符串开头到字符串的to的位置的字符串内容,不包括to位置的字符串

    NSString *subString2 = [string10 substringFromIndex:7];
    NSLog(@"%@",subString2);

取字符串从from的位置到结尾的字符串,包括from 的位置

    NSString *subString3 = [string10 substringWithRange:NSMakeRange(2,6)];
    NSLog(@"%@",subString3);
    //从2开始截取6个字符

获取字符串中的某个字符

    NSString *string11 = @"abcdefg";

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

字符串的比较,如何判断两个字符串是否相等

    if (subString2 == subString3){
        //内容和指针抖想等的时候,才成立
        NSLog(@"subString2 和 subString3 相等");
    }
    else{

        NSLog(@"subString2 和 subString3 不相等");
    }

    /*

如何让两个字符串的指针 和 内容都相同?
浅拷贝 和 深拷贝
浅拷贝:对象和拷贝的内容共用一份实体,仅仅是引用的变量名称不一样。
深拷贝:源对象和拷贝的对象相互独立,其中任何一个对象的改动都不会对另一个对象造成影响。

    NSString *subString4 =[NSString stringWithString:subString2];


    if (subString4 == subString2){
        //内容和指针都想等
        NSLog(@"subString4 和 subString2 相等");
    }
    else{
        NSLog(@"subString4 和 subString2 不相等");
    }

在实际开发过程中,我们通常只需要比较两个字符串的内容是否相等;

    if([subString2 isEqualToString:subString4]){
        NSLog(@"内容相等");
    }
    else{
        NSLog(@"内容不相等");
    }

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


    //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:@"sb"];
    NSLog(@"%@",[NSValue valueWithRange:range]);

只输出第一个遇到该字母次的位置 及 该字符串的长度

    NSRange range1 = [string10 rangeOfString:@"u"];
    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 = @"xxx.avi";
    if([string13 hasSuffix:@"jpg"] || [string13 hasSuffix:@"png"]){

        NSLog(@"这是图片,包含此后缀");

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

字符串 的拼接

    NSString *string14 = @"www.baidu.com";

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

    NSLog(@"%@",string15);



    //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];

连接两个字符串,并且第二个字符串是按一定格式穿进来的;

    http://会少一个/ 拼接的时候会自动补一个/
    NSString *string19 = [string16 stringByAppendingPathComponent:string17];

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

    imagePath = [imagePath lastPathComponent];

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

字符串的其他常用方法

    //1.字符串的转换函数
    NSString *str = @"11n11aaaaa555";
    int a1 = [str intValue];
    NSLog(@"%d",a1);

    //2.字符串的大小写转换
    NSString *str2 = @"aaBaa";
    NSString *str3 = [str2 uppercaseString]; //将字符全部改为大写

    NSString *str4 = [str3 lowercaseString]; //将字符全部改为小些

    NSString *str5 = [str2 capitalizedString]; //将首字母改为大写

    //把所有Ba换成Pi
    NSString *str6 = [str2 stringByReplacingOccurrencesOfString:@"Ba" withString:@"Pi"];

    //在范围内替换
    NSString *str7 =
    [str2 stringByReplacingCharactersInRange:NSMakeRange(1,2) withString:@"gg"];

    //分割
    NSString *str8 = @"aa-bb-cc-dd-ee";
    NSArray *str9 = [str8 componentsSeparatedByString:@"-"];
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值