Snail—OC学习之字符串NSString

首先,看一下不可变字符串NSString的方法
<span style="white-space:pre">	</span>//最直接的定义一个字符串
        NSString * str1 = @"我是Snail";
        //通过一个字符串来创建另一个字符串
        NSString * str2 = [[NSString alloc] initWithString:str1];
        //下面这个方法跟上面这个是一个意思
        NSString * str3 = [[NSString alloc] initWithString:@"我是Snail"];
        //C语言的字符串转换成OC字符串对象
        NSString * str4 = [[NSString alloc] initWithUTF8String:"我是C语言字符串"];
        //OC字符串转换成C语言的字符串
        char * p = [str1 UTF8String];
        //格式化的形式进行创建字符串(对不同类型数据进行拼接)
        int a = 5;
        float b = 2.5;
        NSString * temp = @"我为梦想而生";
        NSString * str5 = [NSString alloc] initWithFormat:@"%d,%.1f,%@",a,b,temp ];
        
        //下面这些方法都是NSString的类方法 也有一些方法来创建字符串
        //格式化的形式创建字符串
        NSString * str6 = [NSString stringWithFormat:@"%d,%.1f,%@",a,b,temp];
        //把C语言字符串转换成OC字符串
        NSString * str7 = [NSString stringWithUTF8String:"我是Snail"];
        //根据存在的字符串创建一个新的字符串
        NSString * str8 = [NSString stringWithString:str1];
        
        //%@格式符可以输出对象的值
        NSLog(@"%@",str2);

NSString的一些相关方法

NSString * str = @"My name is Snail.";
        //NSInteger 有符号整型 跟C的int差不多
        //字符串的长度
        NSInteger length = [str length];
        //unichar 类似于C语言的char ,都表示字符
        unichar a = [str characterAtIndex:1];
        //将str全部转换为大写
        NSString * str2 = [str uppercaseString];
        //将str全部转换成小写
        NSString * str3 = [str lowercaseString];
        //首字母大写
        NSString * str4 = [str capitalizedString];
        //判断字符串的前缀
        NSString * url = @"www.baidu.com";
        BOOL ret1 = [url hasPrefix:@"www"];
        BOOL ret2 = [url hasSuffix:@"com"];

字符串的比较各种方法

//判断两个字符串是否相等
        NSString * str1 = @"My name is Snail.";
        NSString * str2 =  @"My name is Snail.";
        BOOL ret1 = [str1 isEqualToString:str2];
        if (ret1) {
            NSLog(@"str1 与 str2 的值相等");
        }
        
        //比较两个字符串的大小,即就是比较两个字符串相应位置字符的ASCII码的大小
        NSString * str3 = @"asdsfgffg";
        NSString * str4 = @"asdsfgffg";
        NSString * str5 = @"asdsfgffgaad";
        //比较的返回值是NSComparisonResult
        /*
         NSOrderedAscending 升序 后者大    -1
         NSOrderedSame,     相等           0
         NSOrderedDescending 降序 前者大    1
         */
        NSComparisonResult ret2 = [str3 compare:str4];
        if (ret2 == 0) {
            NSLog(@"str3跟str4的值相等  ret2=0");
        }
        NSComparisonResult ret3 = [str3 compare:str5];
        if (ret3 == -1) {
            NSLog(@"str3小于str5   ret3=-1");
        }
        NSComparisonResult ret4 = [str5 compare:str3];
        if (ret4 == 1) {
            NSLog(@"str5 大于 str3  ret4==1");
        }
        
        //不区分大小写比较
        NSString * str6 = @"AshsadaS";
        NSString * str7 = @"sadsadwS";
        BOOL ret5 = [str6 caseInsensitiveCompare:str7];

子串的查找方法

NSString * str = @"我是卖报的小画家";
        NSString * findStr = @"的小";
        
        //判断findStr是否在str中存在
        //返回值是NSRange 是一个结构体 有一个location(表示下标) length(表示长度)
        NSRange range = [str rangeOfString:findStr];
        if (range.location == NSNotFound) {
            NSLog(@"不存在");
        }else{
            NSLog(@"findStr在str的下标是:%lu,长度是%lu",range.location,range.length);
        }

子串的提取

NSString * str = @"My name is Snail";
        //提取到相应下标的之前的字符串 不包括指定位置的字符
        NSString * str1 = [str substringToIndex:5]; //str1:My na
        //提取到字符串尾部 包括指定位置的字符
        NSString * str2 = [str substringFromIndex:5]; //str2 :me is Snail
        //提取一个范围的字符串
        NSRange range = NSMakeRange(4, 5);
        NSString * str3 = [str substringWithRange:range]; //str3:ame i
        NSLog(@"%@",str3);

字符串转换成基本类型

 //字符串的编外方法
        NSString * str = @"1234.245";
        int a = [str intValue];
        NSLog(@"%d",a); // a=1234;
        float b = [str floatValue];
        NSLog(@"%.2f",b);// b = 1234.24
        NSInteger c = [str integerValue];
        NSLog(@"%ld",c);//c = 1234;

下一篇讲可变的字符串


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值