iOS学习(OC语言)知识点整理

一、OC字符串的操作

1)OC中字符串分为两种:

1、不可变字符串NSString:不能修改对象内容,但是可以改变对象的指针。

2、可变字符串NSMutableString:可以修改对象内容。

二、NSString 不可变字符串的操作

1)将字符串常量对象直接赋值给字符串引用 NSString *str1=@"hello"; 字符串对象的输出格式:  NSLog(@"str1=%@",str1)。

2)initWithString可将OC中的字符串对象构建字符串引用   NSString *str2=[[NSString alloc]initWithString:str1];

3)initWithUTF8String可将C语言的字符串创建OC的字符串对象,将C字符串转换为OC字符串:

NSString *str3=[[NSString alloc]initWithUTF8String:"iOS"];

4)initWithFormat可将OC的格式化字符串创建OC的字符串对象 例如:

 int age=;
NSString *name=@"KingKong";
NSString *str4=[[NSString alloc]initWithFormat:@"name is %@,age is %d",name,age];

5)可使用.length方法获取字符串的长度   NSUInteger len= str1.length;

6)containsString 可用于判断字符串中是否含有某个字符 例如:

 NSString *str=@"hello china";
BOOL rest=[str containsString:@"china"];//结果YES

7)characterAtIndex可根据下标取出某个字符 如:

NSString *str1=@"hello"; unichar c= [str1 characterAtIndex:];
//结果为:h

8)compare用于比较两个字符串,该方法区分大小写, 返回结果为NSComparisonResult 枚举类型数据 枚举值有

1、NSOrderedAscending 表示前一个字符串小于后一个字符串

2、NSOrderedSame 表示两个字符串相等

3、NSOrderedDescending 表示前一个字符串大于后一个字符串

实例代码:

NSString *str1=@"hello";
NSString *str3=[[NSString alloc]initWithUTF8String:"iOS"];
NSComparisonResult cmp=[str1 compare:str3];
if(cmp==NSOrderedAscending){
NSLog(@"%@<%@",str1,str3);
}else if (cmp==NSOrderedSame){
NSLog(@"%@=%@",str1,str3);
}else if (cmp==NSOrderedDescending){
NSLog(@"%@>%@",str1,str3);
}//结果:hello<iOS

9)caseInsensitiveCompare 不区分大小写比较字符串;比较字符串,可以设置比较选项options:

1、NSNumericSearch:如果字符串中有数字, 按数字大小比较,例如:ios5<iso12

2、NSCaseInsensitiveSearch:不区分大小写比较,例如iOS7=ios7

实例代码:

 str1=@"iOS7";
str3=@"ios7";
NSComparisonResult cmp=[str1 caseInsensitiveCompare:str3];
cmp=[str1 compare:str3 options:NSCaseInsensitiveSearch];
if(cmp==NSOrderedAscending){
NSLog(@"%@<%@",str1,str3);
}else if (cmp==NSOrderedSame){
NSLog(@"%@=%@",str1,str3);
}else if (cmp==NSOrderedDescending){
NSLog(@"%@>%@",str1,str3);
} //结果:iOS7=ios7

10)isEqualToString 比较2个字符串内容是否相等,返回BOOL(YES/NO)值

实例代码:

 NSString *str1=@"hello";
NSString *str2=[[NSString alloc]initWithString:str1];
if([str1 isEqualToString:str2]){
NSLog(@"%@ equal %@",str1,str2);
}//结果:hello equal hello

11)uppercaseString 将小写字母字符串转为大写 例如:

 NSString *str1=@"hello";
NSString *str6=[str1 uppercaseString];// 结果为:HELLO

12)lowercaseString 将大写字母字符串转为小写 。

13)hasPrefix 判断是否以某个字符串开头(作为前缀)例如 :

NSString  str1=@"www.baidu.com";
if([str1 hasPrefix:@"www"]){
NSLog(@"yes");
}// 结果:yes

14)hasSuffix 判断是否以某个字符串结尾(后缀)例如:

  NSString  str1=@"www.baidu.com";
if([str1 hasSuffix:@"com"]){
NSLog(@"yes");
}//结果:yes

15)substringFromIndex 从某个下标开始取子字符串(到结束)例如:

 NSString str1=@"This is string A";
NSString *res=[str1 substringFromIndex:]; //结果:his is string A

16)substringToIndex 从第一个字符开始取到某个下标的子字符串,不包括当前数字对应的字符,取当前数字下标前面字符

例如:

 NSString  str1=@"This is string A";
NSString *res=[str1 substringToIndex:];//结果:Th
[[str1 substringFromIndex:] substringToIndex:];//结果: strin

17)substringWithRange 根据范围返回子字符串

NSRange range={,};//直接给范围值
range=NSMakeRange(, );//通过函数构造一个范围的变量
NSString str1=@"This is string A";
NSString res=[str1 substringWithRange:range]; //结果:strin

18)rangeOfString 在字符串中查找子字符串,返回这个字符串的所在位置以及长度 NSRange

实例代码:

 NSString  str1=@"This is string A";
NSRange range=[str1 rangeOfString:@"string"]; //结果:{8,6}
if(range.location!=NSNotFound){
NSLog(@"find");
}//结果:find

19)使用 #if 0  代码段… #endif 可以让系统跳过某段代码不执行,例如:

 #if 0
NSLog(@"hello world!");
#endif
NSLog(@"我是第二段代码!");
//执行结果:我是第二段代码!

20)intValue、longValue、floatValue、doubleValue 可将字符串类型的数字转换为数值类型的数字
 例如:

 NSString *str=@“”;
int a=[str intValue];

21)NSString 多个字符串的拼接

实例代码:

   NSString *str1=@"My name is";
NSString *str2=@"John Zhang";
NSString *str3=@"I am 45";
NSString *s1=[NSString stringWithFormat:@"%@ %@ %@",str1,str2,str3];
NSLog(@"s1=%@",s1); //结果:s1=My name is John Zhang I am 45

22)initWithContentsOfFile  将文件内容读取成字符串对象, 第一个参数是文件名(绝对路径),第二个参数是编码类型,
    第三个参数是错误回调信息  例如:

 NSString *path=@"/Documents/ocfile/Person.h" ;
NSString *content=[[NSString alloc]initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

23)直接打印对象,默认调用description方法,显示对象的类名和地址,可以重写description方法,
       注意:如果直接输出类对象中含有中文内容会有乱码,所以含中文内容的类对象必须遍历输出。

三、NSMutableString 可变字符串的操作

1)initWithString 用不可变字符串创建可变字符串对象 例如:

 NSString *str=@"This is string B";
NSMutableString *mStr=[[NSMutableString alloc]initWithString:str];

2)insertString ... atIndex..在指定下标位置插入一个字符串 例如:

 NSMutableString *mStr=[[NSMutableString alloc]initWithString:@"This is string B"];
[mStr insertString:@"hello " atIndex:]; //结果:hello This is string B

3)appendString 在字符串后面追加字符串 例如:

  NSMutableString *mStr=[[NSMutableString alloc]initWithString:@"This is string B"];
[mStr appendString:@"shanghai"];//结果:This is string B shanghai

4)appendFormat 在字符串后面追加一个格式化字符串 例如:

 NSMutableString *mStr=[[NSMutableString alloc]initWithString:@"This is string B"];
[mStr appendFormat:@" %d",];//结果:This is string B 20

5)deleteCharactersInRange 将指定范围的字符串删除 例如:

  NSMutableString *mStr=[[NSMutableString alloc]initWithString:@"This is string B"];
[mStr deleteCharactersInRange:NSMakeRange(, )];// 结果: s string B

6)replaceCharactersInRange 将指定范围的字符串用新的字符串替换 例如:

 NSMutableString *mStr=[[NSMutableString alloc]initWithString:@"This is string B"];
[mStr replaceCharactersInRange:NSMakeRange(, ) withString:@"IS"]; //结果:ThIS is string B
//将字符串中所有的is替换为IS
NSRange range=[mStr rangeOfString:@"is"];
while (range.location!=NSNotFound) {
[mStr replaceCharactersInRange:range withString:@"IS"];
range=[mStr rangeOfString:@"is"];
}

7)replaceOccurrencesOfString 将字符串中指定范围内所有的is替换成IS 例如:

  NSMutableString *mStr=[[NSMutableString alloc]initWithString:@"This is string B"];
[mStr replaceOccurrencesOfString:@“is” withString:@“IS” options: range:NSMakeRange(, mStr.length)];
//结果:ThIS IS string B

8)setString 修改字符串内容 例如:

  NSMutableString *mStr=[[NSMutableString alloc]initWithString:@"This is string B"];
[mStr setString:@"hello"]; //结果:hello

9)NSMutableString 实现多个字符串的拼接  
实例代码:

 NSString *str1=@"My name is";
NSString *str2=@"John Zhang";
NSString *str3=@"I am 45";
NSMutableString *s2=[[NSMutableString alloc]initWithString:str1]; [s2 appendString:str2];
[s2 appendString:@" "];
[s2 appendString:str3];
NSLog(@"s2=%@",s2); //结果:s2=My name isJohn Zhang I am 45

iOS阶段学习第14天笔记(NSString与NSMutableString)的更多相关文章

  1. iOS 阶段学习第11天笔记(OC基础知识)

    iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import  用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...

  2. iOS阶段学习第29天笔记(UITextField的介绍)

    iOS学习(UI)知识点整理 一.关于UITextField的介绍 1)概念: UITextField 是用于接收用户输入的一个控件 2)UITextField  初始化实例代码: //创建一个UIt ...

  3. iOS阶段学习第17天笔记(NSFileManager-NSFileHandle-文件操作)

    iOS学习(OC语言)知识点整理 一.单例模式 1)单例是一种编程思想,一个设计模式,与语言无关在采用了单例对象的应用程序中,需要单例类自行提供实例化单例对象, 不管实例化单例对象多少次,只有一个对象 ...

  4. iOS 阶段学习第七天笔记(函数、递归)

     iOS学习(C语言)知识点整理笔记 一.函数 1)概念:具有特定功能的代码块的封装 2)函数的定义: 函数类型+函数名(形参列表) 函数类型 函数名(形参类型1  形参名1,形参类型2   形参名2 ...

  5. iOS阶段学习第三天笔记(运算符)

    iOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运 ...

  6. iOS 阶段学习第三天笔记(运算符)

    iOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运 ...

  7. iOS阶段学习第34天笔记(UI小组件 UISegment-UISlider-UIStepper-UIProgressView-UITextView介绍)

    iOS学习(UI)知识点整理 一.UI小组件 1.UISegmentedControl 分段选择器  实例代码 - (void)viewDidLoad { [super viewDidLoad]; / ...

  8. iOS阶段学习第32天笔记(页面传值方法介绍)

    iOS学习(UI)知识点整理 一.界面传值方法 1.方法一  Block传值  通过SubView视图的Block向View视图传值改变View视图的背景色 实例代码: 1)SubViewContro ...

  9. iOS阶段学习第30天笔记( UIViewController—Delegate(代理) )

    iOS学习(UI)知识点整理 一.UIViewController的介绍 1)概念:UIViewController 即视图控制器,用来管理和控制页面跳转的一个类 ,iOS里面采用了MVC的体系结构, ...

随机推荐

  1. [php入门] 3、WAMP中的集成MySQL相关基础操作

    前言:本文以小白视角了解WAMP集成开发环境中的MYSQL,涉及的面广而浅,算是导读性质. 1.启动运行熟悉WAMP中的MySQL 先有库.再有表.数据最终以记录的形式插入表中.其中对数据进行操作使用 ...

  2. [ACM_动态规划] 找零种类

    问题描述:假设某国的硬币的面值有 1.5.10.50 元四种,输入一个金额 N (正整数,N<=1000),印出符合该金额的硬币组合有多少种. 问题分析: 1.5.10 元组合出 N 元的方法数 ...

  3. 关于redis启动流程介绍

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/94.html?1455870894 1. 准备运行环境 * 设置oom h ...

  4. PMO到底什么样?(2)

    接上一篇,继续聊一聊PMO到底什么样. 交付功能,8大典型责任 1监控.评定和报告 项目办理单位从交付的视点必定要有监控评定.每个项目在要害的期间上它的进展是不是跟按期的相同:是不是有要害的专家在要害 ...

  5. Memcache基础教程

    Memcache是什么 Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力. 它可以应 ...

  6. MyBatis学习总结(三)——优化MyBatis配置文件中的配置

    一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: 1 <?xml version=" ...

  7. Nodejs从有门道无门菜鸟起飞教程。

    这是一篇菜鸟教程,这是一篇菜鸟教程,如果你是菜鸟到话. 简单来说Nodejs并不是一门新的语言,但是它可以让我们的JS运行在服务器端,在服务器端写JS代码并且输入输出,也就是说以后要是有人问你JS是不 ...

  8. SharePoint 2013连接非默认端口的SQL Server

        SharePoint 2013场在连接的时候不允许出现连接地址中包含端口号,否则场配置就会报错,在执行到配置场数据库时无法完成.     此时如果SQL Server不是用的默认端口1433的 ...

  9. c++实现kd树

    #ifndef _KD_TREE_H_ #define _KD_TREE_H_ #include <memory> #include <vector> #include < ...

  10. Kruskal算法(三)之 Java详解

    前面分别通过C和C++实现了克鲁斯卡尔,本文介绍克鲁斯卡尔的Java实现. 目录 1. 最小生成树 2. 克鲁斯卡尔算法介绍 3. 克鲁斯卡尔算法图解 4. 克鲁斯卡尔算法分析 5. 克鲁斯卡尔算法的 ...