Objective-C 日记③ 字符串

   2023-02-09 学习力0
核心提示:一、创建字符串、类方法   公式创建NSString  +(id) stringWithFormat:(NSString *) format,……;eg:  NSString *height;  height=[NSString stringWithFormat:@"高度是: %d 长度: %d",10,20];得到的字符串:“高度是: 10 长度: 20” 注意:  省

一、创建字符串、类方法 

  公式创建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(@"不同");
    }

  结果当然是“相同”

  

      Objective-C  日记③ 字符串

  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);

  结果:

  

       Objective-C  日记③ 字符串

  注意:

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

    eg:    

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

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

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

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

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

    

           Objective-C  日记③ 字符串

 

  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:

      

               Objective-C  日记③ 字符串

 

 

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

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

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

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

   eg:   

           Objective-C  日记③ 字符串

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

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

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

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

  eg:    

          Objective-C  日记③ 字符串

 

  

三、可变性    

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

  格式

    -(id) stringWithCapacity:(unsigned) capacity;

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

  说明:

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

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

  eg:   

         Objective-C  日记③ 字符串

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

    -(void)deleteCharactersInRange:(NSRange) range;

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

  eg:  

         Objective-C  日记③ 字符串

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 《黑马程序员》 category分类的使用(Objective
    分类的作用:在不改变原来类的基础上,可以给类增加一些方法。使用注意 : ①  分类只能增加方法,不可以增加成员变量                ②  分类的方法在实现中可以访问成员变量,不过成员变量必须手动实现。               
    03-16
  • Objective-C学习—UIScrollView控件使用
    Objective-C学习—UIScrollView控件使用
    一、知识点简单介绍1.UIScrollView控件是什么?(1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限(2)当展⽰示的内容较多,超出⼀一个屏幕时,⽤用户可通过滚动⼿手势来查看屏幕以外的内容(3)普通的UIView不具备滚动功能
    03-16
  • Objective-C Runtime(转)
    博主地址: http://yulingtianxia.com/blog/2014/11/05/objective-c-runtime/曾经觉得Objc特别方便上手,面对着 Cocoa 中大量 API,只知道简单的查文档和调用。还记得初学 Objective-C 时把[receiver message]当成简单的方法调用,而无视了“发送消息”这句话
    03-08
  • iOS扩展——Objective-C开发编程规范 简单io扩展实验代码
    iOS扩展——Objective-C开发编程规范 简单io扩
      最近准备开始系统学习一个完整项目的开发流程和思路,在此之前,我们需要对iOS的开发变成规范进行更系统和详尽的学习,随意对编程规范进行了整理和学习。本文内容主要转载自:Objective-C-Coding-Guidelines-In-Chinese  此外,这篇文章所说的一些常见
    03-08
  • Objective-C利用协议实现回调函数
    实现一个显示文字为测试的视图,然后经过3秒钟测试文字变为回调函数文字。相应的截图如下:  实现的代码如下:定义协议:#import UIKit/UIKit.h @protocol NoteDelegate //回调函数 -(void)messageCallBack:(NSString *)string; @end 调用协议:#impor
    02-10
  • 刨根问底Objective-C Runtime(1)- Self & S
      刨根问底Objective-C Runtime(1)- SelfSuper - Chun Tips专注iOS开发 刨根问底Objective-C Runtime(1)- SelfSuper前言关于Objective-C Runtime一篇好的文档 : Understanding the Objective-C Runtime译文地址为: http://blog.cocoabit.com/blog/2
    02-10
  • Objective-C利用协议实现回调函数
    实现一个显示文字为测试的视图,然后经过3秒钟测试文字变为回调函数文字。相应的截图如下: 实现的代码如下:定义协议:#import UIKit/UIKit.h @protocol NoteDelegate//回调函数-(void)messageCallBack:(NSString *)string;@end  调用协议:#import Founda
    02-10
  • Objective-c开发中混合使用ARC
    首选“Compile Sources”的位置:选中工程-TARGETS-相应的target然后选中右侧的“Build Phases”,向下就找到“Compile Sources”了。如何在未使用arc的工程中引入一个使用了arc特性的文件:对相应的文件添加:-fobjc-arc参数如何在arc工程中引用未使用arc的文件
    02-10
  • Objective C运行时(runtime)技术总结,好强大
    前言:         Objective C的runtime技术功能非常强大,能够在运行时获取并修改类的各种信息,包括获取方法列表、属性列表、变量列表,修改方法、属性,增加方法,属性等等,本文对相关的几个要点做了一个小结。目录:(1)使用class_replaceMethod/cla
    02-09
  • Programming With Objective-C---- Introductio
    a:link { color: rgba(88, 114, 210, 1); text-decoration: none }a:visited { color: rgba(88, 114, 210, 1); text-decoration: none }a:hover { color: rgba(173, 189, 248, 1); text-decoration: none }a:active { color: rgba(0, 0, 255, 1); text-decora
    02-09
点击排行