OC之字符串 NSString与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=20;
NSString *str4=[[NSString alloc]initWithFormat:@"name is %@,age is %d",str1,age];
5)可使用.length方法获取字符串的长度 NSUInteger len= str1.length;
6)characterAtIndex可根据下标取出某个字符 如: NSString *str1=@"hello"; unichar c= [str1 characterAtIndex:0];
结果为:h
7)compare用于比较两个字符串,该方法区分大小写, 返回结果为NSComparisonResult 枚举类型数据 枚举值有
1、NSOrderedAscending 表示前一个字符串小于后一个字符串
2、NSOrderedSame 表示两个字符串相等
3、NSOrderedDescending 表示前一个字符串大于后一个字符串
实例代码:
1 NSString *str1=@"hello"; 2 NSString *str3=[[NSString alloc]initWithUTF8String:"iOS"]; 3 NSComparisonResult cmp=[str1 compare:str3]; 4 if(cmp==NSOrderedAscending){ 5 NSLog(@"%@<%@",str1,str3); 6 }else if (cmp==NSOrderedSame){ 7 NSLog(@"%@=%@",str1,str3); 8 }else if (cmp==NSOrderedDescending){ 9 NSLog(@"%@>%@",str1,str3);10 }//结果:hello<iOS
8)caseInsensitiveCompare 不区分大小写比较字符串;比较字符串,可以设置比较选项
NSNumericSearch:如果字符串中有数字, 按数字大小比较,例如:ios5<iso12
NSCaseInsensitiveSearch:不区分大小写比较,例如iOS7=ios7
实例代码:
1 NSComparisonResult cmp=[str1 caseInsensitiveCompare:str3]; 2 str1=@"iOS7"; 3 str3=@"ios7"; 4 cmp=[str1 compare:str3 options:NSCaseInsensitiveSearch]; 5 if(cmp==NSOrderedAscending){ 6 NSLog(@"%@<%@",str1,str3); 7 }else if (cmp==NSOrderedSame){ 8 NSLog(@"%@=%@",str1,str3); 9 }else if (cmp==NSOrderedDescending){10 NSLog(@"%@>%@",str1,str3);11 } 结果:iOS7=ios7
9)isEqualToString 比较2个字符串内容是否相等,返回BOOL(YES
)值
实例代码:
1 NSString *str1=@"hello";2 NSString *str2=[[NSString alloc]initWithString:str1];3 if([str1 isEqualToString:str2]){4 NSLog(@"%@ equal %@",str1,str2);5 }//结果:hello equal hello
10)uppercaseString 将小写字母字符串转为大写 NSString *str1=@"hello";NSString *str6=[str1 uppercaseString];
结果为:HELLO
11)lowercaseString 将大写字母字符串转为小写 。
12)hasPrefix 判断是否以某个字符串开头(作为前缀)例如 :
NSString str1=@"www.baidu.com";
if([str1 hasPrefix:@"www"]){
NSLog(@"yes");
} 结果:yes
13)hasSuffix 判断是否以某个字符串结尾(后缀)例如:
NSString str1=@"www.baidu.com";
if([str1 hasSuffix:@"com"]){
NSLog(@"yes");
}结果:yes
14)substringFromIndex 从某个下标开始取子字符串(到结束)例如:
NSString str1=@"This is string A";
NSString *res=[str1 substringFromIndex:1]; 结果:his is string A
15)substringToIndex 从第一个字符开始取到某个下标的子字符串,不包括当前数字对应的字符,取当前数字下标前面字符
例如:
NSString str1=@"This is string A";
NSString *res=[str1 substringToIndex:2];结果:Th
[[str1 substringFromIndex:8] substringToIndex:5];结果: strin
16)substringWithRange 根据范围返回子字符串
NSRange range={8,5};//直接给范围值
range=NSMakeRange(8, 5);//通过函数返回一个范围的变量
NSString str1=@"This is string A";
NSString res=[str1 substringWithRange:range]; 结果:strin
17)rangeOfString 在字符串中查找子字符串,返回这个字符串的所在位置以及长度 NSRange
实例代码:
1 NSString str1=@"This is string A";2 NSRange range=[str1 rangeOfString:@"string"]; 结果:{8,6}3 if(range.location!=NSNotFound){4 NSLog(@"find");5 }//结果:find
18)使用 #if 0 代码段… #endif 可以让系统跳过某段代码不执行,例如:
#if 0 NSLog(@“hello world!”); #endif NSLog(@“我是第二段代码!”);
执行结果:我是第二段代码!
19)intValue、longValue、floatValue、doubleValue 可将字符串类型的数字转换为数值类型的数字
例如:
NSString *str=@“88”;
int a=[str intValue];
20)NSString 多个字符串的拼接
实例代码:
1 NSString *str1=@"My name is";2 NSString *str2=@"John Zhang";3 NSString *str3=@"I am 45";4 NSString *s1=[NSString stringWithFormat:@"%@ %@ %@",str1,str2,str3];5 NSLog(@"s1=%@",s1); //结果:s1=My name is John Zhang I am 45
21)initWithContentsOfFile 将文件内容读取成字符串对象, 第一个参数是文件名(绝对路径),第二个参数是编码类型,
第三个参数是错误回调信息 例如:
NSString *content=[[NSString alloc]initWithContentsOfFile:/Documents/ocfile/Person.h"
encoding:NSUTF8StringEncoding error:nil];
22)直接打印对象,默认调用description方法,显示对象的类名和地址,可以重写description方法,
注意:如果直接输出类对象中含有中文内容会有乱码,所以含中文内容的类对象必须遍历输出。
二、NSMutableString 可变字符串的操作
1)initWithString 用不可变字符串创建可变字符串对象 例如:
NSString *str=@"This is string B";
NSMutableString *mStr=[[NSMutableString alloc]initWithString:str];
2)insertString 在指定下标位置插入一个字符串 例如:
NSMutableString *mStr=[[NSMutableString alloc]initWithString:@"This is string B"];
[mStr insertString:@"hello " atIndex:0]; 结果: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",20];结果:This is string B 20
5)deleteCharactersInRange 将指定范围的字符串删除 例如:
NSMutableString *mStr=[[NSMutableString alloc]initWithString:@"This is string B"];
[mStr deleteCharactersInRange:NSMakeRange(0, 6)]; 结果: s string B
6)replaceCharactersInRange 将指定范围的字符串用新的字符串替换 例如:
1 NSMutableString *mStr=[[NSMutableString alloc]initWithString:@"This is string B"];2 [mStr replaceCharactersInRange:NSMakeRange(2, 2) withString:@"IS"]; //结果:ThIS is string B3 //将字符串中所有的is替换为IS4 NSRange range=[mStr rangeOfString:@"is"];5 while (range.location!=NSNotFound) {6 [mStr replaceCharactersInRange:range withString:@"IS"];7 range=[mStr rangeOfString:@"is"];8 }
7)replaceOccurrencesOfString 将字符串中指定范围内所有的is替换成IS 例如:
NSMutableString *mStr=[[NSMutableString alloc]initWithString:@"This is string B"];
[mStr replaceOccurrencesOfString:@“is” withString:@“IS” options:1 range:NSMakeRange(0, mStr.length)];
结果:ThIS IS string B
8)setString 修改字符串内容 例如: NSMutableString *mStr=[[NSMutableString alloc]initWithString:@"This is string B"];
[mStr setString:@"hello"]; 结果:hello
9)NSMutableString 实现多个字符串的拼接
实例代码:
1 NSString *str1=@"My name is";2 NSString *str2=@"John Zhang";3 NSString *str3=@"I am 45";4 NSMutableString *s2=[[NSMutableString alloc]initWithString:str1]; 5 6 [s2 appendString:str2];7 [s2 appendString:@" "];8 [s2 appendString:str3];9 NSLog(@"s2=%@",s2); //结果:s2=My name isJohn Zhang I am 45
OC之字符串 NSString与NSMutableString的更多相关文章
- Objective-C: 字符串NSString与NSMutableString
字符串算是OC中非常重要和常用的一部分内容,OC中的字符串与我之前在学习C,C++,Java中的字符串有一定的不同,它非常类似于C++中容器的概念,但用法却与之还是有很大的不同,也许是因为OC的语法就 ...
- OC第二节 —— NSString和NSMutableString
1.为什么需要NSString对象 答:在OC中创建字符串时,一般不使用C的方法, 因为C将字符串作为字符数组,所以在操作时会有很多不方便的地方, 在Cocoa中NSStri ...
- 14.Object-C--浅谈Foundation框架字符串NSString 与NSMutableString
OC的字符串时经常使用到的,今天我对于OC字符串做一个简单的总结,如果有错误之处,麻烦留言指正.感谢! NSString是一个不可变长度的字符串对象.表示它初始化以后,你不能改变该变量所分配的内存中的 ...
- 字符串NSString与NSMutableString常用方法
NSString 1.初始化 NSString *str1 = @"a OC Program"; 2.初始化 NSString *str2 = [[NSString alloc] ...
- OC字符串NSString
========================== 面向对象编程进阶和字符串 ========================== Δ一.类的设计模式—单例 [单例]程序允许过程中,有且仅有一块内存 ...
- OC本学习笔记Foundation框架NSString与NSMutableString
一.NSString与NSMutableString 相信大家对NSString类都不陌生.它是OC中提供的字符串类.它的对象中的字符串都是不可变的,而它的子类NSMutable ...
- OC中Foundation框架之NSString、NSMutableString
创建方式 )直接赋值 NSString *str =@"abc"; )创建对象 NSString *str2 = [[NSString alloc]init]; str2 =@&q ...
- OC之NSString、NSMutableString学习笔记 常用方法
NSString篇: 1.字符串连接 NSString *beijing = @"北京"; NSString *welcome = [beijing stringByAppendi ...
- OC——NSString和NSMutableString
int main(int argc, const char * argv[]) { @autoreleasepool { //----------------NSString------------- ...
随机推荐
- 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针
您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. ...
- 转:CentOS6.3配置yum源
全新以最小化包安装了64位的CentOS6.3系统,作为本地的Web服务器使用,现记录全过程第二步,配置网易163的yum源 1. 下载repo文件 下载地址:http://mirrors.16 ...
- Android HttpClient POST JSON Restful-web-services
@Override protected String doInBackground(String... arg0) { Gson gson = new Gson(); String json = gs ...
- BZOJ2324: [ZJOI2011]营救皮卡丘
2324: [ZJOI2011]营救皮卡丘 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1359 Solved: 522[Submit][Stat ...
- 【数学】HDU 5761 Rower Bo
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5761 题目大意: 船在(0,a),船速v1,水速v2沿x轴正向,船头始终指向(0,0),问到达(0, ...
- Javascript 操作select控件大全(新增、修改、删除、选中、清空、判断存在等)
1判断select选项中 是否存在Value="paraValue"的Item 2向select选项中 加入一个Item 3从select选项中 删除一个Item 4删除selec ...
- Selenium webdirver 操作浏览器
打开浏览器 HtmlUnit Driver 优点:不会实际打开浏览器,运行速度很快. 缺点:对JavaScript的支持不够好,有时会捕获不到页面元素. 使用:WebDriver driver=new ...
- Java中的不可变类
概念:不可变类的意思是创建该类的实例后,该实例的属性是不可改变的.java中的8个包装类和String类都是不可变类.所以不可变类并不是指该类是被final修饰的,而是指该类的属性是被final修饰的 ...
- MVC三层架构编程(Dao、service、servlet 之间的关系)
木哈哈~先开心一会儿,人生的第一篇博客aaa.我一定好好写.不过之前也没怎么看别人写过,还是有点小激动呢,加油.好好总结,会总结的宝宝才会有提高! 今天想总结一下mvc三层架构模型编程,宝宝学习不怎么 ...
- VS2008LINK : fatal error LNK1000: Internal error during IncrBuildImage
修改链接选项,方法:项目->属性->链接器->常规 下面的“启用增量链接”,将“是(/INCREMENTAL)”改为“否(/INCREMENTAL:NO)”,然后确定就可以了.