NSString 和 NSMutableString类的常见用法
2016-05-20 14:59
429 查看
NSString 和 NSMutableString类的常见的几种用法
NSString和NSMutableString 是Foundation框架下两个常用的处理字符串的类。NSString是静态,而NSSMutableString是动态的。
1. NSString构建字符串
1)最简单的方法,将常量字符串直接赋值给NSString类对象
2)用NSString类方法可以通过一个C字符串构建OC的字符串
举例:
3)NSString 类方法格式化的创建一个字符串
4)stringWithString
5)实例(对象)方法创建字符串
[NSString alloc]initWith…
2.对字符串字母进行大小转换处理
1)小写转大写(uppercaseString)
2) 大写转小写(lowercaseString)
3.判断字符串长度(length)
而实际上,如果用UTF8编码的话,一个汉字在OC中又占多少个字符呢
4. 判断字符串中是否包含有某个字符串(rangeOfString)
5. 字符串内容比较(isEqualToString)
6. 字符串转数值
7. 判断字符串是否以某个字符串开头或结尾
1)是不是以某个字符串开头的(hasPrefix)
2)是不是以某个字符串结尾的(hasSuffix)
8. 从某个字符串中提取子字符串
1)从字符串的某个索引位置开始提取(substringFromIndex)
2) 提取从字符串的开头到某个索引位置之前的部分(substringToIndex)
3)提取字符串中某个范围的子字符串(substringWithRange)
4)应用:”123456abc”逆序输出
9. 删除字符串两端的空格
10. 写内容到磁盘文件(writeToFile),再读取内容
11.字符串扩展stringByAppendingString
12. NSMutableString动态类
NSString和NSMutableString 是Foundation框架下两个常用的处理字符串的类。NSString是静态,而NSSMutableString是动态的。
1. NSString构建字符串
1)最简单的方法,将常量字符串直接赋值给NSString类对象
NSString *str = @"你好!";
2)用NSString类方法可以通过一个C字符串构建OC的字符串
举例:
char *cstr = "你好!"; NSString *str = [NSString stringWithCString : cstr encoding: NSUTF8StringEncording];//C语言中的字符以UTF8来编码的 NSLog(@"str = %@",str);//输出结果:str = 你好! stringWithUTF8String可以简化上面的写法 NSString *str = [NSString stringWithUTF8String:"你好!"];
3)NSString 类方法格式化的创建一个字符串
NSString *str = [NSString stringWithFormat:@"%@%d",@"中国",123]; NSLog(@"%@", str);//输出结果:中国123
4)stringWithString
举例 ~~ NSString *str = [NSString stringWithString:@"你好"];~~//这种写法不提倡了,可以直接被第一种替代
5)实例(对象)方法创建字符串
[NSString alloc]initWith…
举例 ~~NSString *str = [[NSString alloc]initWithString:@"hello123"]; ~~//这样赋值的方式已经不推荐了,可以直接被第一种替代[NSString alloc]initWithString先在堆区申请内存空间,然后赋一个常量字符串,最后把这个常量字符串存到了常量区,之前申请的堆区空间就浪费了,所以不再推荐这样初始化了。 NSString *str = [[NSString alloc]initWithFormat:@"%d%@", 123,@"中国"];//格式化的初始化 NSLog(@"%@", str);//输出结果:123中国 NSString *str = [[NSString alloc]initWithUTF8String:"中国"];//UTF8编码字符串转成OC字符串 NSLog(@"%@", str);//输出结果:中国
2.对字符串字母进行大小转换处理
1)小写转大写(uppercaseString)
举例 NSString *str = @"abcdEf12"; str = [str uppercaseString]; NSLog(@"%@",str);//输出结果:ABCDEF12
2) 大写转小写(lowercaseString)
NSString *str = @"HELLO WORLD"; str = [str lowercaseString]; NSLog(@"%@",str);//输出结果: hello world
3.判断字符串长度(length)
NSString *str = @"1234abc";//字符串中没有汉字的情况 unsigned long len = [str length]; NSLog(@"len = %lu",len);//输出结果:len = 7 NSString *str1 = @"123中国";//字符串有汉字的情况 unsigned long len1 = [str1 length]; NSLog(@"len1 = %lu",len1);//输出结果:len = 5//这里可以看出在OC中,一个汉字默认占一个字符
而实际上,如果用UTF8编码的话,一个汉字在OC中又占多少个字符呢
NSString *str2 = @"123中国"; unsigned long len2 = [str2 lengthOfBytesUsingEncoding: NSUTF8StringEncoding]; NSLog(@"len2 = %lu",len2);//输出结果:len2 = 9 //由此看出一个汉字占3个字符
4. 判断字符串中是否包含有某个字符串(rangeOfString)
NSString *str1 = @"钓鱼岛是中国的!"; NSString *str2 = @"中国"; //判断str1是否包含str2 NSRange r = [str1 rangeOfString: str2];//rangeOfString 方法返回的是一个NSRange的结构体变量 if(r.location!=NSNotFound) { NSLog(@"r.location = %lu, r.length = %lu",r.location, r.length);//如果包含, 输出str2在str1中开始的索引值,和长度 } else { NSLog(@"NotFound");//如果不包含 }
5. 字符串内容比较(isEqualToString)
//有两个字符串,比较它们的内容是否一样 NSString *str1 = @"123a"; NSString *str2 = @"123a"; BOOL b = [str1 isEqualToString:str2];//该方法返回的值是BOOL型的,应该用一个BOOL的变量保存 if(b) { NSLog(@"same"); } else { NSLog(@"different"); }
6. 字符串转数值
NSString *str = @"123";//只能转数值的字符 int a = [str intValue];//转整型 NSLog(@"a = %d", a);//a = 123 NSString *str1 = @"12.3"; double d = [str1 doubleValue];//转double型 NSLog(@"d = %.2f", d);//d = 12.30
7. 判断字符串是否以某个字符串开头或结尾
1)是不是以某个字符串开头的(hasPrefix)
NSString *str1 = @"马化腾"; //判断是不是以"马"开头的名字(假如str1是个人,在不知道全名的情况下,判断str1是不是姓马) BOOL b = [str1 hasPrefix:@"马"];//hasPrefix方法返回的是BOOL型的数据类型 if(b) { NSLog(@"这个人姓马,他的名字是%@", str1); }else { NSLog(@"不姓马"); }
2)是不是以某个字符串结尾的(hasSuffix)
NSString *str = @"世界最高峰在中国"; BOOL b = [str hasSuffix:@"中国"];//hasSuffix方法返回的也是BOOL型数据 if(b) { NSLog(@"是以“中国”结尾的一句话"); } else { NSLog(@"不是"); }
8. 从某个字符串中提取子字符串
1)从字符串的某个索引位置开始提取(substringFromIndex)
NSString *str = @"爱你的虎口我脱离了危险"; str = [str substringFromIndex:5];//提取从索引为5(我)的字符开始到字符串结尾 NSLog(@"%@",str);//输出结果:我脱离了危险
2) 提取从字符串的开头到某个索引位置之前的部分(substringToIndex)
NSString *str = @"abcdefgh"; str = [str substringToIndex:3]; NSLog(@"%@",str);//输出结果:abc
3)提取字符串中某个范围的子字符串(substringWithRange)
NSString *str = @"钢铁锅寒夜里喊修瓢锅"; NSRange r = {4,3}; str = [str substringWithRange:r]; NSLog(@"%@",str);//输出结果:夜里喊
4)应用:”123456abc”逆序输出
NSString *str = @"12345abc"; NSRange r = {0,1}; for(long i=[str length]-1;i>=0;i--) { r.location = i; NSLog(@"%@",[str substringWithRange:r]); }
9. 删除字符串两端的空格
NSString *str1 = @"我们 "; NSString *str2 = @" 是"; NSString *str3 = @"程序猿"; str1 = [str1 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];//这么长的方法,我也是醉了,必须靠Xcode提示啊 str2 = [str2 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; NSLog(@"%@%@%@",str1,str2,str3);//打印出来看看,结果是:我们是程序猿
10. 写内容到磁盘文件(writeToFile),再读取内容
NSString *str = @"胜利是属于我们的!"; ~~[str writeToFile:@"a.txt",atomically:YES];~~//这种写文件的形式已经被弃用了 [str writeToFile:@"a.txt" atomically:NO encoding:NSUTF8StringEncoding error:nil];//把str里的类容写到a.txt文件里,保存到磁盘 NSString *str1; NSError *error; str1 = [NSString stringWithContentsOfFile:@"a.txt" encoding:NSUTF8StringEncoding error:&error];//类方法只能由类调用,这里用NSString来调用 NSLog(@"%@%@",error,str1);
11.字符串扩展stringByAppendingString
NSString *str = @"abcd"; str = [str stringByAppendingString:@"efgh"]; NSLog(@"%@",str);
12. NSMutableString动态类
NSMutableString *str = [NSMutableString stringWithCapacity:100];//预留100个字符的空间 NSLog(@"%@",str);//此时是空串 [str appendString:@"123"];//直接添加字符串"123" [str appendFormat:@"%d",123];//格式化的添加"123" NSRange r = {0,2}; [str replaceCharactersInRange:r withString:@""]; NSLog(@"%@",str); [str deleteCharactersInRange:r];//删除字符串某个范围的字符 NSLog(@"%@",str);
相关文章推荐
- 只会CSS还不够,LESS、SASS、BootStrap、Foundation一网打尽!
- Open Source Foundation
- 黑马程序员-IOS基础之OC框架(Foundation)
- nsvalue与nsnumber
- ios Foundation框架中的可变和不可变对象NSString 和NSMutableString(一)
- ios Foundation框架中的可变和不可变对象NSArray 和NSMutableArray(二)
- ios Foundation框架中的可变和不可变对象(三)
- Foundation
- Foundation框架介绍
- object引用Foundation头文件
- Foundation 心得、笔记
- 黑马程序员--iOS--Objective-C基础 (Foundation框架 二)
- 关于响应式框架 Foundation 概述与特点,教程
- 黑马程序员IOS-OC语言-Foundation-结构体
- 黑马程序员_Foundation框架基础知识(二)集合类
- 黑马程序员_Foundation框架基础知识(三)-常用类
- 黑马程序员——Foundation框架:结构体及字符串之NSString
- 黑马程序员——Foundation框架:字符串之集合类
- 文章标题
- 黑马程序员——入学Blog10----Foundation框架常用的结构体与类