一、创建字符串、类方法 

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

Objective-C 日记③ 字符串相关推荐

  1. AC日记——字符串最大跨距 openjudge 1.7 26

    26:字符串最大跨距 总时间限制:  1000ms 内存限制:  65536kB 描述 有三个字符串S,S1,S2,其中,S长度不超过300,S1和S2的长度不超过10.想检测S1和S2是否同时在S中 ...

  2. AC日记——字符串位移包含问题 1.7 19

    19:字符串移位包含问题 总时间限制:  1000ms 内存限制: 65536kB 描述 对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串. 给定两个字符串s1 ...

  3. AC日记——字符串P型编码 openjudge 1.7 31

    31:字符串p型编码 总时间限制:  1000ms 内存限制:  65536kB 描述 给定一个完全由数字字符('0','1','2',-,'9')构成的字符串str,请写出str的p型编码串.例如: ...

  4. java学习日记 - 字符串

    一. 包装类 1. 为什么要定义包装类 为每一种基本数据类型定义包装类,可以在包装类中定义操作该基本类型的属性和方法 在定义属性时,可以把数据类型定义为包装类,使用起来和基本类型一样(可以自动装箱,拆 ...

  5. 紫影龙的编程日记 —— 字符串处理技术

    今天是我学习编程开发的第五天,今天我主要学习的内容是字符串处理技术. 首先,我们先来看看什么是字符串~ 字符串或串(String)是由数字.字母.下划线组成的一串字符.它是编程语言中表示文本的数据类型 ...

  6. iOS之性能优化·优化App的启动速度

    抛砖引玉 启动是 App 给用户的第一印象,启动越慢用户流失的概率就越高,良好的启动速度是用户体验不可缺少的一环. 苹果是一家特别注重用户体验的公司,过去几年一直在优化 App 的启动时间,特别是去年 ...

  7. Keras-Sequential模型(2)

    重点介绍Sequential模型方法 compile compile(self, optimizer, loss, metrics=[], sample_weight_mode=None, **kwa ...

  8. 抖音品质建设 - iOS启动优化之原理篇

    前言 启动是 App 给用户的第一印象,启动越慢用户流失的概率就越高,良好的启动速度是用户体验不可缺少的一环.启动优化涉及到的知识点非常多面也很广,一篇文章难以包含全部,所以拆分成两部分:原理和实战. ...

  9. vue替换全部符合’字符串_技术成长日记-Vim实用技巧-4.7查找替换

    1. 普通查找 / 向下查找 ? 向上查找 n 查找下一个目标字符串 N 查找上一个目标字符串 q/ 回溯查找历史,输入该命令后会在状态栏上方显示一个查找历史回溯窗口,如图4.1: 图4.1 回溯查找 ...

最新文章

  1. springMVC转发与重定向
  2. C#对事务的代码封装
  3. python-封装方法用于读取excel
  4. Tomcat无法shutdown进程问题解决办法
  5. adb无法连接安卓手机
  6. java timetasker_Java网络与多线程系列之1:实现一个简单的对象池
  7. 如何让 Linux 下非 root 用户程序使用小于 1024 端口
  8. 之前做设计收集的部分网站
  9. 世达03017数字万用表的使用
  10. 团队管理之《带团队,就是用好你身边的人》
  11. ACID--事物具有的四个特征
  12. IP地址介绍,子网划分(VLSM),构造超网(CIDR) 详解
  13. 借助小程序·云开发制作校园导览小程序丨实战
  14. [论文阅读笔记]Deep Neural Networks are Easily Fooled:High Confidence Predictions for Unrecognizable Images
  15. mysql注入单引号被转义_插入MySQL时转义PHP中的单引号[重复]
  16. c#:使用网易邮箱账号发送电子邮件
  17. 三维重建算法综述|传统+深度学习
  18. H5获取用户所在城市 网页获取用户城市名称
  19. 计算机网络VLAN划分实验报告
  20. 【我的代码】前端遇上After Effects --- 鼠标悬浮效果(上)

热门文章

  1. 341. 扁平化嵌套列表迭代器
  2. Linux中基于eBPF的恶意利用与检测机制(rootkit、驱动)
  3. Python离线安装PIL 模块(pillow、沙箱、照相)
  4. Python 编码问题:‘ascii‘ codec can‘t encode characters in position 的解决方案(中文乱码终极解决方案)
  5. shell脚本if中判断大于、小于、等于、不等于的符号
  6. IO模式设置,阻塞与非阻塞的比较,recv参数对性能的影响—O_NONBLOCK(open使用)、IPC_NOWAIT(msgrcv)、MSG_DONTWAIT
  7. Windows编程—Windows驱动开发环境搭建
  8. mysql in 命令
  9. maven 学习---Maven本地资源库
  10. 盘点 Greenplum 数据库的十大特点