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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/PEPE/p/2647735.html