关闭

NSString类基础总结

123人阅读 评论(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
查看评论

C++基础知识汇总

C++面试题——基础概念篇 唐璐 http://blog.csdn.net/worldwindjp/         面试C++程序员的时候一般都是3板斧,先是基础问答,然后一顿虚函数、虚函数表、纯虚函数、抽象类、虚函数和析构函数、虚函数...
  • weiyuefei
  • weiyuefei
  • 2016-08-01 20:59
  • 1102

NSString 大总结

NSString 总结
  • u010586842
  • u010586842
  • 2014-11-23 10:44
  • 1037

【iOS 基础】NSString 类

在IOS的开发过程中,NSString绝对是一个经常使用的类, 最近一直在对字符串进行各种操作, 索性停下来总结一下这个类,各位看官请轻喷,有问题大家一起互动。 OBjective-C 中处理字符串的类有两个:NSString 和 NSMutableString。 NSString 为不可变...
  • wawa426
  • wawa426
  • 2014-12-18 17:37
  • 240

Foundation基础 --- NSString类

#import int main(int argc, const char * argv[]) { @autoreleasepool { //创建一个字符串 NSString *str = @"ding"; NSLog(@"st...
  • qq_24374039
  • qq_24374039
  • 2015-07-08 11:19
  • 176

学习心得-------计算机网络基础(1)

从复试结束之后就忙于奔波,甚是乏累,从沈阳来到北京就忙于找工作,少于看书,昨天终于决定入职,入职之后,做的方向是网络质量检测,APM,应用性能管理,给我的产品说明,只是寥寥几个字,各种术语,百度网络质量的指标,一顿云里雾里,看的一头雾水,于是决定从新学习计算机网络,学习各种协议。 先将昨天的知识贴下...
  • Hearthougan
  • Hearthougan
  • 2016-04-21 17:37
  • 1130

JavaEE基础10个小总结

1.JavaScript(DOM) JS是脚本语言,不是编程语言,不需要编译,浏览器会自己识别。 JavaScript组成 ECMAScript:核心,定义JS的基本语法和类型等。 BOM:浏览器对象模型,JS通过BOM操作浏览器窗口。 DOM:文档对象模型,JS通过DOM操作HTML页面。 DO...
  • zqqiang0307
  • zqqiang0307
  • 2016-12-19 23:48
  • 333

Android程序设计基础--总结

Android App程序主要由4种类型组成:Activity(活动)、Service(后台服务)、Content Provider(内容提供商)、Broadcast Receiver(广播接收端) Android程序的设计流程(.apk): 1、视觉设计/UI [XML] ; 2、程序逻辑[Jav...
  • dy3200
  • dy3200
  • 2017-08-30 16:00
  • 148

【C#基础】基础总结

刚开始接触C#语言,和之前学过的VB语言相比,还是存在一些相同之处和不同之处的。刚刚看完了一部分视频。视频中都是对基础知识的讲解。老师很逗,讲解的很细致。         1、.net是什么?:.net一般值得是.net FrameWork框架,是一种平台,一...
  • qq_26545305
  • qq_26545305
  • 2015-12-06 21:20
  • 1135

NSString类详解

说到字符串NSString肯定每个开发IOS的都用过,它是Foundation框架下的一个核心处理字符串的类,掌握它非常有用。 属性: 最直接的属性有length,字符串长度 2.字符串的获取 //截取指定位置之后的字符串 - (NSString *)substringFromIndex:(NSUI...
  • qq_14920635
  • qq_14920635
  • 2017-05-05 16:52
  • 585

Redis基础总结

转自:http://www.jb51.net/article/56448.htm 1.redis是什么 2.redis的作者何许人也 3.谁在使用redis 4.学会安装redis 5.学会启动redis 6.使用redis客户端 7.redis数据结构 – 简介 8.red...
  • basycia
  • basycia
  • 2016-08-10 20:20
  • 2533
    个人资料
    • 访问:491次
    • 积分:62
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档