zoukankan      html  css  js  c++  java
  • ObjectiveC 日记③ 字符串

    一、创建字符串、类方法 

      公式创建NSString

      +(id) stringWithFormat:(NSString *) format,……;

    eg:

      NSString *height;

      height=[NSString stringWithFormat:@"高度是: %d 长度: %d",10,20];

    得到的字符串:“高度是: 10 长度: 20”

    注意:

      省略号:表示可以接收多个参数,类似NSLog();

      加号:“+” Object-C运行时生成一个类的时候,会创建一个代表该类的类对象(类对象包含:指向超类的指针、类名、指向类方法列表的指针)

      如何在声明方法时添加了加号,该方法就为类方法.这个方法属于类对象(而不是类的实例对象),常用于创建新的实例。我们称这种用来创建新对象的类方法为工厂方法(stringWithFormat就是一个工厂方法)

     

      如果该方法将会在某个对象实例中运行 方法用前导减号(-)来开始声明

      如果创建一个实例对象或者访问一些全局类数据,建议使用前导加号(+)将它声明为类的方法

    二、关于大小、字符串比较

    关于大小:

      NSString中包含一个方便的方法length,返回的是字符串中的字符个数

      使用:unsigned int length = [height length];

      说明:NSString的length方法能够准确无误处理国际字符串:比如中文以及使用Unicode国际字符标准的字符串这点和C语言不同,C语言可能出现一个字符占用的空间可能多于一个字符

    字符串比较:

      A:isEqualToString:用来比较接收方和当作参数传递来的字符串。返回一个BOOL(YES or NO 不是true,false)类型来表示字符串内容是否相同。格式:-(BOOL) isEqualToString:(NSString *) aString;

      eg:

    NSString *str1 = @"hello pepe";
        NSString *str2=[NSString stringWithFormat:@"hello %s","pepe"];
        if([str1 isEqualToString:str2]){
            NSLog(@"相同");
        }
        else{
            NSLog(@"不同");
        }

      结果当然是“相同”

      

         

      B:compare方法 声明如下:-(NSComparisonResult) compare: (NSString *) string

       compare将接收对象和传递来的字符串逐个字符的进行比较,返回一个NSComparisonResult(enum型数据)来显示比较结果。

      eg:

        

    BOOL result=[@"kaka" compare: @"pepe"];
        NSLog(@"%s","kaka vs  pepe");
        NSLog(@"%d",result);
        
        result=[@"kaka" compare: @"kaka"];
        NSLog(@"%s","kaka vs  kaka");
        NSLog(@"%d",result);
        
        result=[@"pepe" compare: @"kaka"];
        NSLog(@"%s","pepe vs  kaka");
        NSLog(@"%d",result);

      结果:

      

          

      注意:

        比较两个字符串是否相等时请用isEqualToString而不能仅仅比较字符串的指针值;

        eg:    

        if([str1 isEqualToString:str2]){   NSLog(@"相同"); }                             VS          if( str1==str2){  NSLog(@"相同");    }

        注意二者的区别:1、==运算符只判断str1和str2的指针数值,而不是它们所指的对象

                2、如果想检查两个对象的标识此时可以使用==

                3、如果想查看等价性使用isEqualToString
                 
           

        compare 比较字符串返回的结果有下面几种:

        

               

      C:不区分大小写比较

        -(NSComparisonResult) compare: (NSString *) string options: (unsigned) mask;  [kəm'pærisən]  比较;对照;比喻;比较关系

        options参数是一个位掩码,可以使用位或运算符(|)来添加选项标记:

          NSCaseInsensitiveSearch:不区分大小写比较;  [in'sensətiv] adj. 感觉迟钝的,对…没有感觉的

          NSLiteralSearch:进行完全比较,区分大小写;    ['litərəl] adj. 文字的;逐字的;无夸张的

          NSNumericSearch:比较字符串字符个数,而不是字符值;  [nju:'merik] 数;数字 adj. 数值的(等于mumerical);数字的

        eg:

          

                   

     

       D:字符串中是否包含其他字符串

        查询头尾是否包含某字符串:hasPrefix 、hasSuffix

        -(BOOL) hasPrefix :(NSString * ) string;  检查字符串是否以某个字符串开头。         [,pri:'fiks, 'pri:fiks] 加前缀;将某事物加在前面

        -(BOOL) hasSuffix: (NSString *) string;   检查字符串是否以某个字符串结尾。         ['sʌfiks, sə'fiks] vt. 添后缀 n. [语]后缀;下标

       eg:   

               

       查询字符串内是否包含某字符串:rangeOfString 返回一个NSRange struct可以告诉你字符串相匹配的部分在哪里以及匹配的字符个数

        -(NSRange) rangeOfString:(NSString *) string;

      location用来存放字段范围的起始位置

      length是该范围内所含元素的个数

      eg:    

              

      

    三、可变性    

      NSString是不可变的字符串,如果需要使用可变字符串,Cocoa提供了一个NSString子类NSMutableString。

      格式

        -(id) stringWithCapacity:(unsigned) capacity;

      可通过appendString、appendFormat来添加新字符串:-(void)appendString:(NSString *)string ; -(void) appendFormat:(NSString *)format……;

      说明:

        appendString接收参数string,然后将其复制到字符串对象的结尾

        appendFormat与stringWithFormat类似,但它是将格式化的字符串附加到接收字符串的尾部,而不是创建新的字符串对象;

      eg:   

             

      使用deleteCharactersInRange方法删除字符串中的字符:

        -(void)deleteCharactersInRange:(NSRange) range;

      因NSMutableString是NSString的子类所以NSString的方法NSMutableString都可以使用

      eg:  

             


    作者:PEPE
    出处:http://pepe.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    MySQL 5.7.19 CentOS 7 安装
    cocos2d-x JS 弹出对话框触摸监听(吞噬点击事件遮挡层)
    cocosStudio制作ScrollView并在cocos2dx 3.0中使用。
    cocos2dx JS 游戏切到后台再进入游戏的处理
    使用Eclipse出现make: *** No rule to make target `all'. Stop.解决办法
    cocos2dx 3.13 在Mac平台下配置安卓环境变量
    (已解决)Eclipsez中打不开c++文件,显示Editor could not be initialized.
    延期版本webstorm(解决许可证过期,注册,激活,破解,码,支持正版,最新可用)
    cocos2dx JS 层(Layer)的生命周期
    Cocos2d-JS studio基础控件的使用
  • 原文地址:https://www.cnblogs.com/PEPE/p/2647735.html
Copyright © 2011-2022 走看看