字符串的定义、替换、比较、截取
2016-02-25 21:07
295 查看
一、字符串
1、C语言中,字符串是由char(ASCII码)字符组成。
2、OC中,字符串是由unichar(Unicode)字符组成。
一个unicode字符类型在内存中占两个字节。
3、NSString,不可变字符串,即:创建以后,内容和⻓度不能更改
4、NSMutableString,可变字符串,即:创建以后,内容还可以修改
5、创建⼀个新的字符串,可以使⽤实例⽅法和便利构造器。
不可变字符串的修改操作,本质就是得到⼀个新的字符串。 不可变字符串的修改⽅法以string开头,有返回值。 可变字符串的修改⽅法没有返回值,修改原字符串。
通过initWithString:来初始化对象,如果用常量区字符串来初始化,直接将常量区地址存储到指针变量中;如果 用其他字符串来初始化,先将字符串内容拷贝到堆区,再将堆区地址返回。
用initWithFormat:来初始化对象,将常量区内容复制到堆区,再将堆区地址返回
字符串长度方法:计算的是所有Unicode字符的个数
1、 从字符串的第几个位置开始,一直到字符串的结尾
NSString *substring = [string substringFromIndex:3];
2、
定义一个range结构体变量,规定起始位值和长度
NSRange range = NSMakeRange(2, 4);
根据范围从字符串中截取子字符串
NSString *sub2 = [string substringWithRange:range];
3、字符串替换的方法
NSString *str = @"hello boy";
NSString *newStr = [str stringByReplacingOccurrencesOfString:@"hello" withString:@"hi"]
4、
判断两个字符串是否完全相等
BOOL equal = [@"123" isEqualToString:@"123"]
5、
字符串比较
NSLog(@"compare = %ld",[@"abc" compare:@"ABC" options:1])
二、数组-有序集合
iOS中存放数据的容器类都称为集合(collection)。 数组是有序集合,只能存放对象 数组有下标(index)的概念,靠index来索引元素,下标从0开始。 数组分不可变数组(NSArray)和可变数组(NSMutableArray)。数组只能存放对象。
需要存储整型或者结构体的时候,如何做呢?
存储:把整型或者结构体 转换为对象,将对象存⼊数组
读取:先取出对象,再将对象还原为整型或者结构体。
三、值对象
NSNumber 数值对象: 完成数值标量和对象类型的互转 基本类型(int,float等)转换为NSNumber NSNumber转换为基本类型(int,float等)
NSValue 完成标量和对象类型的互转 结构体(NSRange等)、指针等转换为NSValue NSValue转换为结构体(NSRange等)、指针等
四、总结
1、可变对象通常是不可变对象的子类,包含父类的所有方法,并且 具有增删改的功能。
2、可变对象的增删改都是对自身的操作;不可改变对象的增删改都会生成新的对象,原对象不变。
3、数组只能存储对象类型的数据,有序,靠下标索引对象。
4、NSNumber、NSValue主要是为了完成标量和对象的互转,便于与 collection配合使⽤。
1、C语言中,字符串是由char(ASCII码)字符组成。
2、OC中,字符串是由unichar(Unicode)字符组成。
一个unicode字符类型在内存中占两个字节。
3、NSString,不可变字符串,即:创建以后,内容和⻓度不能更改
4、NSMutableString,可变字符串,即:创建以后,内容还可以修改
5、创建⼀个新的字符串,可以使⽤实例⽅法和便利构造器。
不可变字符串的修改操作,本质就是得到⼀个新的字符串。 不可变字符串的修改⽅法以string开头,有返回值。 可变字符串的修改⽅法没有返回值,修改原字符串。
通过initWithString:来初始化对象,如果用常量区字符串来初始化,直接将常量区地址存储到指针变量中;如果 用其他字符串来初始化,先将字符串内容拷贝到堆区,再将堆区地址返回。
用initWithFormat:来初始化对象,将常量区内容复制到堆区,再将堆区地址返回
字符串长度方法:计算的是所有Unicode字符的个数
1、 从字符串的第几个位置开始,一直到字符串的结尾
NSString *substring = [string substringFromIndex:3];
2、
定义一个range结构体变量,规定起始位值和长度
NSRange range = NSMakeRange(2, 4);
根据范围从字符串中截取子字符串
NSString *sub2 = [string substringWithRange:range];
3、字符串替换的方法
NSString *str = @"hello boy";
NSString *newStr = [str stringByReplacingOccurrencesOfString:@"hello" withString:@"hi"]
4、
判断两个字符串是否完全相等
BOOL equal = [@"123" isEqualToString:@"123"]
5、
字符串比较
NSLog(@"compare = %ld",[@"abc" compare:@"ABC" options:1])
二、数组-有序集合
iOS中存放数据的容器类都称为集合(collection)。 数组是有序集合,只能存放对象 数组有下标(index)的概念,靠index来索引元素,下标从0开始。 数组分不可变数组(NSArray)和可变数组(NSMutableArray)。数组只能存放对象。
需要存储整型或者结构体的时候,如何做呢?
存储:把整型或者结构体 转换为对象,将对象存⼊数组
读取:先取出对象,再将对象还原为整型或者结构体。
三、值对象
NSNumber 数值对象: 完成数值标量和对象类型的互转 基本类型(int,float等)转换为NSNumber NSNumber转换为基本类型(int,float等)
NSValue 完成标量和对象类型的互转 结构体(NSRange等)、指针等转换为NSValue NSValue转换为结构体(NSRange等)、指针等
四、总结
1、可变对象通常是不可变对象的子类,包含父类的所有方法,并且 具有增删改的功能。
2、可变对象的增删改都是对自身的操作;不可改变对象的增删改都会生成新的对象,原对象不变。
3、数组只能存储对象类型的数据,有序,靠下标索引对象。
4、NSNumber、NSValue主要是为了完成标量和对象的互转,便于与 collection配合使⽤。
相关文章推荐
- 谷歌推荐的图片加载框架--Glide的简单介绍
- Java 常见面试题整理
- HDU1532 - Drainage Ditches(网络流)
- 我们编程吧 之 Linux 学习手册0.41
- 网络编程_UDP编程原理_发送类型_cs与bs区别JAVA187-188
- 【POJ 2750】 Potted Flower(线段树套dp)
- TWinControl.DefaultHandler里的CallWindowProc(FDefWndProc)还挺有深意的,TButton对WM_PAINT消息的处理就是靠它来处理的(以前不明白为什么总是要调用inherited,其实就是没有明白TWinControl.DefaultHandler的真正用处,而且还很有用)
- Log4j详解
- 【ADO】回头复习,总是会有新的收获
- 一个自动根据xcode中的objective-c代码生成类关系图的神器
- MVC视图展现模式之移动布局解析-续集
- android开发之路01
- 内存计算
- 欢迎使用CSDN-markdown编辑器
- QT离线安装包下载地址
- iOS 导航条的基本用法
- java知识结构树
- 震动效果
- POJ2186 Popular Cows 【强连通分量】+【Kosaraju】+【Tarjan】+【Garbow】
- 160225、解决纯js文件国际化的问题