OC基础:Foundation框架之NSString和NSMutableString

 内容简介: Foundation框架之NSString和NSMutableString
 
第一部分》》》》NSString的使用
      基本用法
        //1.创建字符串
        //1.1常规创建,创建一个空的字符串
       
 //这样创建的字符串几乎没用,因为它们是空的而且还不可变
       
 //alloc创建
       
 NSString *str1 = [[NSString alloc] init];
       
 NSLog(@"str1 is:%@",str1);
       
 //用类方法创建
       
 NSString *str2 = [NSString string];
       
 NSLog(@"str2 is:%@",str2);
       
       
 //1.2格式化创建
       
 //alloc创建
       
 NSString *str3 = [[NSString alloc] initWithFormat:@"wlecome"];
       
 NSLog(@"str3 is:%@",str3);
       
 //类方法创建
       
 NSString *str4 = [NSString stringWithFormat:@"beijng"];
       
 NSLog(@"str4 is:%@",str4);
       
       
 //1.3快速创建
       
 NSString *strtemp = @"strtemp";
       
 NSLog(@"strtemp is %@",strtemp);
       
       
 //1.4下面两种方法已经不推荐使用
       
 //因为它们较为繁琐,且效果和快速创建是一样的,已经被弃用
       
 //NSString *str222 = [[NSString alloc] initWithString:@"222"];
       
 //NSString *str333 = [NSString stringWithString:@"333"];
       
       
 //1.5特别注意
       
 //这样并没有修改字符串,而是修改了指针的指向
        str1 =
@"hello world";
       
 NSLog(@"str1 is %@",str1);

       
       
       
 //2.字符串的比较
       
 NSString *str6 = @"str6";
       
 NSString *str7 = @"str6";
       
 //2.1比较是不是同一个对象
       
 if([str6 isEqualTo:str7]){
           
 NSLog(@"str6str7是同一个对象");
        }
else{
           
 NSLog(@"不是同一个对象");
        }
        //2.2比较字符串的指针
       
 BOOL bool67 =(str6 == str7);
       
 if(bool67){
           
 NSLog(@"str6 str7是同一个字符串");
        }
else{
           
 NSLog(@"str6str7不是同一个字符串");
        }
        //2.3比较字符串内容
        if ([str6 isEqualToString:str7]){
           
 NSLog(@"str7 str6 字符串内容相同");
        }
else{
           
 NSLog(@"str6str7字符串内容不相同");
        }
        //2.4比较字符串的大小
        //使用NSComparisonResult接受结果
       
 //其原理是使用了枚举
       
 //typedef NS_ENUM(NSInteger, NSComparisonResult)
       
 //{NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
       
 NSString *str8 = @"see you tommorrow";
       
 NSString *str9 = @"see you chen";
       
 NSComparisonResult result = [str8 caseInsensitiveCompare:str9];
       
 if(result ==NSOrderedAscending){
           
 NSLog(@"升序");
        }
else if(result == NSOrderedSame){
           
 NSLog(@"相等");
        }
else if(result == NSOrderedDescending){
           
 NSLog(@"降序");
        }
       
       
       
       
 //3.求字符串的长度,使用length
       
 NSInteger length = [str8 length];
       
 NSLog(@"str8 length is %ld",length);
       
       
       
       
 //4.字符串转换的问题
       
 //转为大写:uppercaseStrig
       
 NSString  *str8upper = [str8 uppercaseString];
       
 NSLog(@"str8upper is %@",str8upper);
       
 //转为小写:lowercaseString
       
 NSString *str8lower = [str8 lowercaseString];
       
 NSLog(@"str8lower is %@",str8lower);
       
 //首字母大写:capitalzedString
       
 NSString *str8capitalized =[str8 capitalizedString];
       
 NSLog(@"strcapitalized is %@",str8capitalized);
   
       
       
 //5.字符串和基本数据类型的转换
       
 //5.1转为整型
       
 NSString *str10 = @"123";
       
 NSInteger integervalue = [str10 integerValue];
       
 NSLog(@"integervalue is %ld",integervalue);
       
 //5.2转为浮点型
       
 NSString *str11 = @"1234.1";
       
 CGFloat  floatvalue = [str11 doubleValue];
        NSLog(@"floatvalue is %f",floatvalue);
        //5.3z换为布尔型
        BOOL boolvalue = [str10 boolValue];
       
 NSLog(@"boolalue is %d",boolvalue);
       
 //特别注意
       
 //如果赋值的字符串是false或者是0,结果是0
       
 //如果赋值的字符串是true或者其他不为0的字符串,结果是1
       
 NSString *truth = @"01";
       
 BOOL value = [truth boolValue];
       
 NSLog(@"value is %d",value);

       
       
 //6.从键盘输入赋值一个字符串
       
 //使用字符指针来引用一个字符串
       
 char *p = malloc(20);//开辟内存
       
 NSLog(@"请输入字符串:");
       
 scanf("%s",p);
       
 NSString *input = [NSString stringWithCString:pencoding:NSUTF8StringEncoding];
        NSLog(@"经过输入得到的字符串是:%@",input);

        用法补充

          //1.字符串截取
       
 //1.1从开始截取到最后
        NSString *str1 =
 @"hello world";
        NSString *str2 =[str1 substringFromIndex:1];
        NSLog(
@"str2 is %@",str2);
       
 //1.2截取下前面的字符,不包括下标
       
 //包括最后一位的截取是11,如果是12就会数组越界
        NSString *str3 = [str1 substringToIndex:11];
        NSLog(
@"str3 is %@",str3);
       
 //1.3使用结构体截取
       
 //从下标2位开始截取,截取6
        NSRange range ={2, 6};
        NSString *str4 = [str1 substringWithRange:range];
        NSLog(
@"str4 is %@",str4);
       
 //输出一个结构体
        NSLog(
@"range is %@",NSStringFromRange(range));
       
       
        //2.获取字符
       
 //通过下标取字符
        NSString *str5 =
 @"I love you ,China";
       
 char c = [str5  characterAtIndex:3];
        NSLog(
@"str5 中下标为3的字符是%c",c);
       
       
       
 //3.通过特殊字符分隔字符串
        NSString  *str6 =
 @"天平座,水瓶座,双子座,白羊座";
        NSArray *array = [str6 componentsSeparatedByString:
@","];
        NSLog(
@"输出这个数组是%@",array);
       
       
       
 //4.字符串的拼接
        NSString *str7 =
 @"take me";
        NSString *str8 =
 @"to your heart";
       
 //4.1 stringWithFormat
        NSString *str9 = [NSString stringWithFormat:
@"%@ %@",str7,str8];
        NSLog(
@"str9 is %@",str9 );
       
 //4.2 stringByAppendingString
        NSString *str10 = [str7 stringByAppendingString:str8];
        NSLog(
@"str10 is %@",str10);
       
 //4.3 stringbyAppendingFormat
        NSString *str11 = [str7 stringByAppendingFormat:
@" %@",str8];
        NSLog(
@"str11 is %@",str11);
       
 //字符串拼接扩展一,自动增加了"/"
        NSString *str12 = [str7 stringByAppendingPathComponent:str8];
        NSLog(
@"st12 is %@",str12);
       
 //字符串拼接扩展二,自动增加了“."
        NSString *str13 = [str7 stringByAppendingPathExtension:str8];
        NSLog(
@"str13 is %@",str13);
       
       
       
 //5.字符串中的类型转换
        NSString *truth =
 @"false";
       
 BOOL value = [truth boolValue];
        NSLog(
@"value is %d",value);
       
       
       
       
 //6.字符串查找
       
 //指定一个字符串,然后在原字符串中查找,返回的是一个结构体
        NSString *str14 =
 @"my hometown is zhumadian!";
        NSString *str15 =
 @"zhumadian";
        NSRange range2 = [str14 rangeOfString:str15];
       
 //输出结构体
        NSLog(
@"range2 is %@",NSStringFromRange(range2));
       
 //通过获取结构体内容的方式输出
        NSLog(
@"range2.location is%ld,range2 length is %ld",range2.location,range2.length);
       
 //通过判断的方式,查看是否找到了
       
 if(range2.location!= NSNotFound){
            NSLog(
@"找到了字符串");
        }
else{
            NSLog(
@"没有找到字符串");
        }
       
 //在枚举中,NSnotFound被定义为NSIntegerMax,即最大值
       
 //输出的值是:9223372036854775807
        NSLog(
@"输出NSNotFound%ld",NSNotFound);
       
       
       
       
 //7.字符串替换
       
 //7.1使用已有字符串替换原字符串中的指定部分
       
 //StringByReplacingOccurrencesOfString
        NSString *str16 =
 @"the way to success";
        NSString *str17 = [str16 stringByReplacingOccurrencesOfString:
@"success" withString:@"dream"];
        NSLog(
@"替换后得到字符串str17%@",str17);
       
 //7.2使用结构体替换
       
 //stringByReplacingCharactersInRange
        NSRange range3 = {3, 6};
        NSString *str18 =
 @"abcdefghijk";
        NSString *str19 = [str18 stringByReplacingCharactersInRange:range3 withString:
@"ZS"];
        NSLog(
@"str19 is %@",str19);
 

第二部分》》》》NSMutableString的使用

                 //NSMutableStringNSString的子类
        //NSMutbaleString是可变字符串,可以修改字符串的内容
       
       
 //1.创建可变字符串
       
 //注意:不可以使用快速创建的方式
       
 //1.1NSMutableString继承与NSString,同样通过alloc和类方法可以创建空的字符串
       
       
 //1.2普通方法创建
       
 NSMutableString *str1  =[[NSMutableString alloc]initWithString:@"welcome"];
       
 NSLog(@"str1 is %@",str1);
       
 NSMutableString *str2 = [NSMutableString stringWithString:@"it is ok!"];
       
 NSLog(@"str2 is %@",str2);
       
 //1.3通过格式化的方法来创建
       
 NSMutableString *str3 =[[NSMutableString alloc] initWithFormat:@"hello"];
       
 NSLog(@"str3 is %@",str3);
       
 NSMutableString *str4 = [NSMutableString stringWithFormat:@"world"];
       
 NSLog(@"str4 is %@",str4);
       
       
 //2.插入字符串
       
 //使用insertString
        [str4
 insertString:@"hehe" atIndex:0];
       
 NSLog(@"str40位置插入字符串后:str4 = %@",str4);
  
       
 //3.删除字符串
       
 //首先构建好结构体
       
 //deleteCharactersInRange
       
 NSRange range = {1,2};
        [str4
 deleteCharactersInRange:range];
       
 NSLog(@"str4删除字符串后得:str4 = %@",str4);
       
        //4.拼接字符串,是在本身上添加
       
 //4.1使用appendString
        [str4
 appendString:@"ZS"];
       
 NSLog(@"使用appendString追加:str4=%@",str4);
       
 int index =90;
       
 //4.2使用appendFormat
        [str4
 appendFormat:@"%d",index];
       
 NSLog(@"使用appendFormat添加:str4=%@",str4);
       
        //5.替换字符串
       
 NSRange range2 ={2,5};
        [str4
 replaceCharactersInRange:range2 withString:@"替换"];
        NSLog(@"替换字符串后str4 = %@",str4);



第三部分》》》关于字符串的练习


   //题目:去掉字符串“123-456-789”中间的‘-’,得到新数组
   
 //第一种方法
   
 //分别截取获取数字,得到三个新数组,然后拼接
   
 NSString *str = @"123-456-789";
       
 NSString *str1 = [str substringWithRange:NSMakeRange(0, 3)];
       
 NSString *str2 = [str substringWithRange:NSMakeRange(4, 3)];
       
 NSString *str3 =[str substringWithRange:NSMakeRange(8, 3)];
       
 NSString *str4 = [str1 stringByAppendingFormat:@"%@%@",str2,str3];
       
 NSLog(@"方法一得到字符串:%@",str4);
       
   
 //第二种方法
   
 //替换的思想,直接把“-”替换掉
       
 NSString *str5 = [str  stringByReplacingOccurrencesOfString:@"-"withString:@""];
       
 NSLog(@"方法二得到字符串:%@",str5);
       
   
 //第三种方法
   
 //先分割得到数组,再组装拼接
       
 NSArray *array=[str componentsSeparatedByString:@"-"];
       
 NSString *str6 =[array componentsJoinedByString:@""];
       
 NSLog(@"str7 is %@",str6);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值