关闭

NSString类基础总结

80人阅读 评论(0) 收藏 举报

#import <Foundation/Foundation.h>


int main(int argc,const char * argv[]) {

    @autoreleasepool {

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

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

        NSComparisonResult result =  [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:xwj11 options:NSCaseInsensitiveSearch];

        

        NSString *xwj12 =@"jack";

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

         BOOL  res1 = [xwj12compare:xwj13 options:NSLiteralSearch];

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

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

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

        BOOL  res2 = [xwj12compare:xwj13 options:NSNumericSearch];

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

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

        NSString *xwj16 =@"xiaoCai";

        NSString *xwj17 =@"xiaoXie";

        BOOL res3 = [xwj16isEqualToString:xwj17];

         

 // 判断前缀

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

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

        

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

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

      

     NSString *xwj18 =@"I love you";

       NSRange ran =  [xwj18rangeOfString:@"love"];

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

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

        

    NSString *xwj19 =@"I love you";

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

      NSRange ran1 = [xwj19rangeOfString:@"love"options:NSBackwardsSearch];

        

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

//        typedef struct _NSRange{

//            NSUInteger location;

//            NSUInteger length;

//        }NSRange;

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

        该结构体有两个成员:

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

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

// 创建结构体的方式

        NSRange range =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结构体变量表示要从主字符串的那一个位置开始截取多少个字符串.

          NSRange range1 =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]);

        

        

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

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

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

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

        NSInteger integerValue;//NSInteger

        longlong longLongValue;//转换成long long

        BOOL boolvalue;// BOOL bool;

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

        

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

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

      char* xwj25 = [xwj24UTF8String];

        

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

        NSString *xwj26 = [NSStringstringWithUTF8String:xwj25];

        

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

       xwj26 =  [xwj26 stringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceCharacterSet]];

        NSLog(@"%@",xwj26);

    

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

        NSString *xwj27 =@"i love you";

        xwj27 = [xwj27 uppercaseString];

        

        

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

        NSString *xwj28 =@"I LOVE YOU";

       xwj28 =  [xwj28 lowercaseString];

        

        

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

        NSString *xwj29 =@"i love you";

            xwj29 = [xwj29 capitalizedString];

        

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

        NSString *xwj30 =@"iloveXieWenJianyouYOU";

       xwj30 =  [xwj30 stringByTrimmingCharactersInSet:[NSCharacterSetlowercaseLetterCharacterSet]];

        

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

        NSString *xwj31 =@"iloveyouEEEEEEE";

       xwj31 =  [xwj31 stringByTrimmingCharactersInSet:[NSCharacterSetuppercaseLetterCharacterSet]];

        

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

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

        

        

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

    }

 

  return 0;

}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:281次
    • 积分:61
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档