OC-字符串的运用

 /**

     *  :字符串NSString

     */

    

  //1.字符串的创建

    //说明:NSString是不可变字符串

    //(1)常量字符串

    NSString *str1=@"字符串常量";

    NSLog(@"%@",str1);

    

    //(2)格式化字符转,把其他类型转换成OC字符串

    

      int grade=100;

      NSString *str2=[NSString stringWithFormat:@"My grade is %d",grade]; //很重要,必须会

      NSLog(@"str2=%@",str2);

    

   //根据其他对象创建字符串

    NSString *str3=[NSString stringWithFormat:@"%@AAA",str1];

    NSLog(@"str3=%@",str3);

    

   //(3)C语言的字符串,转换为OC字符串

    //@(基本类型),可以把基本类型转换为OC的对象类型

    char *cstr=" i am a c sring";

    NSString *str4=@(cstr);

    NSString *str5=[NSString stringWithUTF8String:cstr];

    NSLog(@"%@%@",str4,str5);

    

   //(4) 使用便利构造器

    NSString *str6=[[NSString alloc]initWithUTF8String:cstr];


  //2.字符串比较

    //(1),相等比较

    NSString *str7=@"abc";

    

    NSString *str8=[NSString stringWithUTF8String:"abc"];

    

    NSString *str9 = [NSString stringWithString:str7];

    if (str7 == str9) {        //对于字面量字符串系统不会重复创建对象,只会让该指针直接指向该对象

        NSLog(@"xiangtong");

    }

    NSLog(@"str7的内存地址:%p,str9的内存地址:%p",str7,str9);

    

    if (str7==str8)   //等号为恒等,判断是否是同一个对象,而不是对象中的内容(内存地址不等!)

    {

        NSLog(@"str8str7相等");

    }

    else

    {

        NSLog(@"str7str8不等!");

    }


    if ([str7 isEqualToString: str8]) {  //isEqualToString: 是比较字符串的内容相等

        NSLog(@"str8str7相等");


    }

    

    else

    {

        NSLog(@"str7str8不等!");

    }

    //3.空串和空nil

    //nil空指针,不指向任何对象

    NSString *str11=@"";

    NSString *str12;

    

    if (str12==nil)

    {

        NSLog(@"str12是空的");

    }

    if ([str11 isEqualToString:@""])

    {

         NSLog(@"str11是空串");

    }

//  4.字符串大小比较 : 一位一位的从头开始比

    // @"999" @"95231"

    NSString *str13=@"998";

    NSString *str14=@"95231";

   // NSOrderedAscending:升序,前面的比后面的小

    if ([str13 compare:str14]==NSOrderedAscending//-1

    {

        NSLog(@"str13>str14");

    }

    //NSOrderedDescending:降序,前面的比后面的大

    else if ([str13 compare:str14]==NSOrderedDescending//1

    {

        NSLog(@"str13str14");

    }

    else

    {

       NSLog(@"str13str14相等");

    }

    

    //5.字符串的追加

    //NSString不可变字符

    //stringByAppendingString 直接在后面追加字符

    NSString *str15=@"abc";

    NSLog(@"%@",str15);

    

    str15 =[str15 stringByAppendingString:@"def"];

    NSLog(@"追加之后的字符串%@",str15);

    

    //6.获取字符串的某一字符

    //characterAtIndex :位置

    char ch =[str15 characterAtIndex:5];

    NSLog(@"ch=%c",ch);

    

    //7.字符串的截取

    NSString  *str16=@"abcdefgh";


    //从某个索引开始截取字符串,直到末尾

    NSString *str17=[str16 substringFromIndex:2];

    NSLog(@"str17=%@",str17);

    

    //从第一个字符开始截取,不包括最后一位

    NSString *str18=[str16 substringToIndex:3];

     NSLog(@"str18=%@",str18);

    

 //截取一定范围的字符串

    //NSRange:结构体,location从哪里开始,length截取的位数

    //NSMakeRange(0, 4)构造一个结构体变量

    NSString *str19=[str16 substringWithRange:NSMakeRange(04)];

      NSLog(@"str19=%@",str19);

//取字符串中每一个字符

 for ( int i=0;i<[ str16 length];i++)

{

 NSLog(@"%c",[str16 characterAtIndex:i])

}

 //  7. 字符串的大小写转换

  

     NSString *str101=@"AbCDeF";

    NSString *str102=[str101 lowercaseString];

    NSLog(@"字符串转化为小写:%@",str102);

    

    NSString *str103=[str101 uppercaseString];

    NSLog(@"字符串转化为小写:%@",str103);

//8.字符串的前后缀判断

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

    //判断前缀

    BOOL hasPreFix=[str104 hasPrefix:@"www."];

    if (hasPreFix) {

        NSLog(@"符合对应前缀要求");

    }

    else {

        NSLog(@"不符合对应前缀要求");

    }

    

    BOOL hasSufFix=[str104 hasSuffix:@".com"];

    if (hasSufFix) {

        NSLog(@"符合对应后缀要求");

    }

    else{

      NSLog(@"不符合对应后缀要求");

    }

 //9.字符串分割

  // @"name=yang&sex=m&tel=1770&color=yellow"

  //遇到componentsSeparatedByString:就分割

    NSString *url =@"name=yang&sex=m&tel=1770&color=yellow";

    NSArray *components =[url componentsSeparatedByString:@"&"];

    NSLog(@"components=%@",components);

    

    //方法(1).快速枚举   重点1

    //缺点,没有数组的索引

    //从数组中每次取一个放入到str变量中

    for (NSString *str in components)

   {  //此代码会执行数组个次数

        NSLog(@"%@",str);

          }

    //遍历数组

   // 方法(2). 遍历数组:利用数组的count个数 (依人)

    for (int i=0; i<components.count; i++)

    {

        //取出数组的每一个组件,例如:name=yang

        NSString *com=components[i];

        NSArray *newArr =[com componentsSeparatedByString:@"="];

        NSString *key=newArr[0];

        NSString *value =newArr[1];

        NSLog(@"%@:%@",key,value);

    }

    //10.字符串的替换

    NSString *str20=@"abcd efg gh";

    //把一系列的某种字符串用其他字符替换

    //用空串把字符串中的所有的空格替换

    NSLog(@"str20=%@",str20);

    

    NSString *str21=[str20 stringByReplacingOccurrencesOfString:@" " withString:@""];

    NSLog(@"去掉空格后的字符串是%@",str21);

    

    NSString *str22=@"scf*asdcv*vdsdg";

     NSLog(@"str22=%@",str22);

    

    NSString *str23=[str22 stringByReplacingOccurrencesOfString:@"*" withString:@""];

    

    NSLog(@"str23=%@",str23);

  //11.  读取网络/本地文件

    

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

    //网络路径

    NSURL *httpUrl=[NSURL URLWithString:str105];

    //本地路径

    NSURL *fileUrl=[NSURL fileURLWithPath:str105];

    //读取网络文件

    NSString *httpStr=[NSString stringWithContentsOfFile:httpUrl encoding:NSUTF8StringEncoding error:nil];

    NSLog(@"httpStr=%@",httpStr);

    NSString *fileStr=[NSString stringWithContentsOfFile:@"/Users/Dew/Desktop/test.txt" encoding:NSUTF8StringEncoding error:nil];

    NSLog(@"fileStr=%@",fileStr);

    

    //写入文件

    NSString *str106=@"hello OC";

    BOOL isOk =[str106 writeToFile:@"/Users/Dew/Desktop/test.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];

    

    if (isOk) {

        NSLog(@"文件写入成功");

    }

    else

    {

     NSLog(@"文件写入失败");

    }

    



 /**

     *  二:可变字符串NSmutableString

     */

    //     NSMutableString 是NSString的子类

    //    NSString 的方法对他依然试用


//1.可变字符串的添加

     //    调用append方法后不产生新的对象

    //    直接在原对象上追加

    //    应用场景:拼接参数

    NSMutableString *mstr=[NSMutableString stringWithString:@"开始"];

    //字符串追加的第一种方式,直接追加一个普通字符串

    [mstr appendString:@"abcde"];

    [mstr appendString:@"fghijk"];

    //追加格式化字符串

    int grade2=99;

    [mstr appendFormat:@"grade=%d",grade2];

      NSLog(@"%@",mstr);

    

  //2.可变字符串的替换

    NSString *str20=@"abcd efg gh";

    //把一系列的某种字符串用其他字符替换

    //用空串把字符串中的所有的空格替换

    NSLog(@"str20=%@",str20);

    

    NSString *str21=[str20 stringByReplacingOccurrencesOfString:@" " withString:@""];

    NSLog(@"去掉空格后的字符串是%@",str21);

    

    NSString *str22=@"scf*asdcv*vdsdg";

     NSLog(@"str22=%@",str22);

    

    NSString *str23=[str22 stringByReplacingOccurrencesOfString:@"*" withString:@""];

    

    NSLog(@"str23=%@",str23);

    //3.可变字符串的删除

// deleteCharactersInRange:NSMakeRange(55) 从哪里开始删除多少个字符

   NSMutableString *str24=[NSMutableStringstringWithString:@"hello love world!"];

  [str24 deleteCharactersInRange:NSMakeRange(5,5)];

  NSLog(@"str24=%@",str24);

    

 //4.可变字符串的插入

    NSMutableString *str25=[NSMutableStringstringWithString:@"1111 2 1 2 aaa !"];

    

    [str25 insertString:@"sing nice"atIndex:6];

    

    NSLog(@"%@",str25);


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值