NSString类基础总结

#import<Foundation/Foundation.h>


intmain(intargc,constchar* argv[]) {

   @autoreleasepool{

   // NSStringFoundation非常常用的类,废话不多说直接上代码

   //1直接为NSString指针变量初始化一个OC字符串常量

   NSString*xwj =@"XieWenJian";

   //2使用new或者alloc来创建一个空的字符串对象

   NSString*wej1 = [NSStringnew];

    //各位亲们new这个方法其实内部是调用alloc方法然后init初始化的.

   NSString*xwj2 = [[NSStringalloc]init];

     //3调用NSString的类方法来快速得到一个字符串的对象.

       NSString*xwj3 = [NSStringstring];

    //使用个格式控制符来拼接一个新的字符串对象.

       NSString*xwj4 = [NSStringstringWithFormat:@"字符串格式控制符,变量列表"];

        

    

    /*

     以上各位看官学习了NSString类的创建方法.一定想知道它在内存里究竟是怎么存储的吧?下面由我来给大家介绍一些NSString在内存中的恒定性.

      1.字符串对象在内存中的存储.

     如果是以字符串常量去初始化一个NSString指针,那么这个字符串常量是存储在常量区之中的.

     例如NSString *xwj = @"XieWenJian";存储在常量区

      2.如果是调用NSString类方法来得到一个字符串对象,这个对象就创建在堆区.创建在堆区的引用计数器是unsigned long的最大值,不过在理就不做篇幅过多介绍了.稍后在内存篇会详细介绍.

      NSString *str = @"lili"

     NSString *xwj = [NSString stringWithFormat:@"Format%@",str];//创建在堆区

      xwj = @"lilei"; // 若果为xwj而重新复制的话.不会改变上面的字符串对象,上面的字符产对象不会发生变化,而是,先查看常量区中是否有@"lilei"这个字符.如果有就直接赋值,如果没有才会创建.

        */

    //下来来谈一下字符串的比较

  // - (NSComparisonResult)compare:(NSString *)string;

    /*先来说一下比较的原理.比较ASCII比较两个字符串的第0个字符的ASCII的大小.

    如果相等在比较下一个.返回值是一个NCSomparisonResut类型的枚举

      */

    typedefNS_ENUM(NSInteger,NSComparisonResult){

     NSOrderedAscending = -1L,//小于.第一个字符小于第二个字符串.

    NSOrderedSame,//相等两个字符串的内容是相等的.

     NSOderedDescending// 大于.第一个字符串是大于第二个字串的.

     };

//如果没理解的话看下面,也可以使用int类型的变量来接受这个结果

//如果返回时-1说明当前这个字符串小于传入的字符串.

//如果返回时0说明当前字符串和传入的字符串是的内容是相等的.

// 如果返回的是1说明当前字符串和传入字符串是大于的.

       NSString*xwj0 =@"cainiao";

       NSString*xwj1 =@"cainiao";

       NSComparisonResultresult =  [xwj0compare:xwj1];

       switch(result) {

           caseNSOrderedAscending:

               NSLog(@"小于");

               break;

           caseNSOrderedDescending:

               NSLog(@"大于");

               break;

           caseNSOrderedSame:

               NSLog(@"等于");

               break;

        }

 //比较字符串的第二种方式:指定比较选项

 //      - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask;

 /*

 官方文档解释: Numbers within strings are compared using numeric value, that is, Foo2.txt < Foo7.txt < Foo25.txt

 英文不好看的有点晕吧?没关系看官只看,我来为您解释.

  NSCaselnsensitiveSearch:(忽略大小写的比较)

  NSLiteralSearch:完全比配的比较

  NSNumericSearch: 比较的是两个同样格式的字符串中,数字的大小.

 看在两个例子

  */

       NSString*xwj10 =@"jack";

       NSString*xwj11 =@"JACK";                     //返回的结果是零

      BOOL  res = [xwj10compare:xwj11options:NSCaseInsensitiveSearch];

        

       NSString*xwj12 =@"jack";

       NSString*xwj13 =@"JACK";                     //返回的结果是1

        BOOL  res1 = [xwj12compare:xwj13options:NSLiteralSearch];

        //完全匹配的比较,返回一说明str1str2

       NSString*xwj14 =@"Users/fox/Desktop/pic0001.jpg";

        NSString*xwj15 =@"Users/fox/Desktop/pic0002.jpg";

       BOOL  res2 = [xwj12compare:xwj13options:NSNumericSearch];

//这种比较,只适合于两个字符串格式相同的情况下,其中有数字的比较,比较的是数字的大小一般用来带序号的比较.

//判断两个指针指向的字符串对象的是否相同

       NSString*xwj16 =@"xiaoCai";

       NSString*xwj17 =@"xiaoXie";

       BOOLres3 = [xwj16isEqualToString:xwj17];

         

 //判断前缀

       BOOLres4 = [xwj16hasPrefix:@"xiao"];//判断前缀

        BOOLres5 = [xwj16hasPrefix:@"Cai"];//判断后缀

        

//判断一个字符串中是否包含一个字符串

//        - (NSRange)rangeOfString:(NSString *)astring;

      

    NSString*xwj18 =@"I love you";

      NSRangeran =  [xwj18rangeOfString:@"love"];

        //查找在str字符串中@"love"的范围

       NSLog(@"第一次出现的下标是:%lu",ran.location);

        

   NSString*xwj19 =@"I love you";

       // options参数要求找出最后一次出现的范围

     NSRangeran1 = [xwj19rangeOfString:@"love"options:NSBackwardsSearch];

        

//      NSRange是一个Foundation框架中的结构体.

//        typedef struct _NSRange{

//            NSUInteger location;

//            NSUInteger length;

//        }NSRange;

/*一个NSRange结构体变量表示1段范围通常情况下,用来表示1个子字符串在主字符串中的范围.

       该结构体有两个成员:

        location 表示这个范围的起始位置下标.

    length: 表示该范围内的长度.*/

//创建结构体的方式

       NSRangerange =NSMakeRange(3,7);

       NSLog(@"range.location = %lu,range.length = %lu",range.location,range.length);

 //字符串的截取->从指定的下标截取到最后

//  - (NSString *)substringFromIndex:(NSUInteger)from;

       //参数是传入一个下标开始一直截取到最后

       NSString*xwj20 =@"I love you";

       NSString*newStr = [xwj20substringFromIndex:4];

        

 //从第0个元素截取到指定的下标.但是不包括这个下标的字符

//        - (NSString *)substringToIndex:(NSUInteger)to;

        

// ->从字符串中截取一个范围的字符串

//        - (NSString *)substringWithRang:(NSRange)range;

//参数:传入一个NSRange结构体变量表示要从主字符串的那一个位置开始截取多少个字符串.

         NSRangerange1 =NSMakeRange(3,7);

       //从下标为4的元素开始截取4

      NSString*newStr1 =  [xwj20substringWithRange:range1];

        

 //字符串的替换

        

       NSString*xwj21 =@"山无棱天地合乃敢与君绝";

      NSString*xwj22 =  [xwj21stringByReplacingOccurrencesOfString:@""withString:@""];

        

//获取字符串中每一个下标的字符  - (unichar)characterAtIndex:(NSUInteger)index;


       NSString*xwj23 =@"天下有始,以为天下母,既得其母,以知其子,既知其子,复守其母";

       NSLog(@"ch ==%C",[xwj23characterAtIndex:8]);

        

        

 //字符串转换成基本数据类型

       doubledoubleValue;//将字符串转换成double;

       floatfloatValue;//将字符串转换成float;

       intintValue;//将字符串转换成int;

       NSIntegerintegerValue;//NSInteger

       longlonglongLongValue;//转换成long long

       BOOLboolvalue;// BOOLbool;

  //因为这个真的比较简单自己就不做演示了,需要一点的是,如果字符串的字面量不是纯的数字,在转换的时候能转换多少就是多少.@12a,转成12

        

 //如何OC字符串转换成C语言的字符串.

       NSString*xwj24 =@"    为学折益,为道日损,损之有损,以至无为    ";

     char* xwj25 = [xwj24UTF8String];

        

    //C语言中的字符串转换成OC字符串

       NSString*xwj26 = [NSStringstringWithUTF8String:xwj25];

        

  //去掉字符串中的前后空格非常有用

       xwj26 =  [xwj26stringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceCharacterSet]];

       NSLog(@"%@",xwj26);

    

        //将字符串转换为大写字符串

       NSString*xwj27 =@"i love you";

        xwj27 = [xwj27uppercaseString];

        

        

        //将字符串转换为小写字符串

       NSString*xwj28 =@"I LOVE YOU";

       xwj28 =  [xwj28lowercaseString];

        

        

        //将字符串转换成首字母大写

       NSString*xwj29 =@"i love you";

            xwj29 = [xwj29capitalizedString];

        

        //去掉字符串前后的小写字母

       NSString*xwj30 =@"iloveXieWenJianyouYOU";

       xwj30 =  [xwj30stringByTrimmingCharactersInSet:[NSCharacterSetlowercaseLetterCharacterSet]];

        

        //去掉字符串前后的大些字母

       NSString*xwj31 =@"iloveyouEEEEEEE";

       xwj31 =  [xwj31stringByTrimmingCharactersInSet:[NSCharacterSetuppercaseLetterCharacterSet]];

        

       //去掉头尾指定的字符串

       xwj31 =  [xwj31stringByTrimmingCharactersInSet:[NSCharacterSetcharacterSetWithCharactersInString:@"EEEEEEE"]];

        

        

        // OK,由于时间预先,今天就浅浅的讲述点NSString的小方法吧,如有不正之处,请指出,可以转载于收藏,但是得注明出处.谢谢.

    }

 

 return0;

}


版权声明:本文为qq_33601200原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。