自学iOS开发系列----OC(字符串)
2016-11-21 13:44
288 查看
OC的程序,依托于基础类库Foundation,这个框架里提供很多官方类。其中有三个基础的数据结构:字符串、数组、字典。OC兼容C的字符串,但是OC有自己的字符串,是一个类。声明的对象,既能存储一串字符,又能通过一些方法,管理存储的字符。
一、不可变字符串
1.创建字符串
C中用”” 表示字符串,OC中用@”” 表示字符串;
打印C字符串用%s,打印OC字符串用%@。
①字面量方法(常量赋值)
②实例化方法(对象方法)
③用C字符串创建OC字符串
④格式化字符串
⑤类方法
2.求字符串长度
3.通过索引获取相应的字符
4.判断两个字符串是否相等(BOOL 布尔值,非真即假)
5.字符串查找
6.截取字符串
①按照范围截取
②从某位置截取到最后(包含起始位置)
③从第一个字符截取到某位置(不包含结束位置)
7.判断前后缀
8.数字串转化为数字
9.大小写转换
①把所有小写字母转成大写
②把所有大写字母转成小写
③把每个单词的首字母变成大写(连续的字符会做为一个整体)
10.从本地读取文件内容
二、可变字符串
1.在指定位置插入子串
2.删除指定范围的子串
3.追加子串
4.修改字符串
5.替换字符串
小练习
1.从字符串@”Welcome to Beijing!”, 中提取第3到第10个字符,生成字符串。
2.将可变字符串@”When I was young, I loved a girl in neighbor class.”中,从young提取到girl。替换成@”a teacher, I rather to teach student”。(要求不能手动计数)
参考答案(一万个读者有一万个哈姆雷特,一万个程序员有一万种编码风格,答案仅供参考)
1.从字符串@”Welcome to Beijing!”, 中提取第3到第10个字符,生成字符串。
2.将可变字符串@”When I was young, I loved a girl in neighbor class.”中,从young提取到girl。替换成@”a teacher, I rather to teach student “。(要求不能手动计数)
一、不可变字符串
1.创建字符串
C中用”” 表示字符串,OC中用@”” 表示字符串;
打印C字符串用%s,打印OC字符串用%@。
①字面量方法(常量赋值)
NSString * str1 = @"春风十里不如你"; NSLog(@"字面量赋值:%@",str1);
②实例化方法(对象方法)
NSString * str2 = [[NSString alloc] initWithString:@"再别康桥"]; NSLog(@"实例方法:%@",str2);
③用C字符串创建OC字符串
NSString * str3 = [[NSString alloc] initWithCString:"C String" encoding:NSUTF8StringEncoding]; NSLog(@"C字符串创建OC字符串:%@",str3);
④格式化字符串
NSString * str4 = [[NSString alloc] initWithFormat:@"%@-%@",@"升值",@"加薪"]; NSLog(@"格式化字符串:%@",str4);
⑤类方法
NSString * str5 = [NSString stringWithFormat:@"%d,%f,%@",521,13.14,@"我带你一生一世"];
2.求字符串长度
NSString * strLength = @"谈一场不分手的恋爱"; NSUInteger len = [strLength length]; NSLog(@"length = %lu",len);
3.通过索引获取相应的字符
NSString * strIndexCharacter = @"I love you forever"; unichar c = [strIndexCharacter characterAtIndex:7]; NSLog(@"%C",c);
4.判断两个字符串是否相等(BOOL 布尔值,非真即假)
NSString * strEqual1 = @"To live in hearts we leave is not to die"; NSString * strEqual2 = @"To live in hearts we leave is not to die"; BOOL isEqual= [strEqual1 isEqualToString:strEqual2]; if (god == TRUE) { NSLog(@"两个字符串相等"); } else { NSLog(@"两个字符串不相等"); }
5.字符串查找
NSString * strSeek = @"I love you"; NSRange range = [strSeek rangeOfString:@"love me"]; NSLog(@"love loc = %lu,len = %lu",range.location,range.length); if (range.length == 0) { NSLog(@"不存在这样的子串"); }
6.截取字符串
①按照范围截取
NSSstring * strSub = @"I love you forever !"; NSRange range = {2,4}; NSString * strRange = [strSub substringWithRange:range]; NSLog(@"按照范围截取字符串%@",strRange);
②从某位置截取到最后(包含起始位置)
NSString * str1 = [strSub substringFromIndex:3]; NSLog(@"%@",str1);
③从第一个字符截取到某位置(不包含结束位置)
NSString * str2 = [strSub substringToIndex:7]; NSLog(@"%@",str2);
7.判断前后缀
NSString * strFix = @"http://www.baidu.com/beatiful/girl.png"; BOOL tag1 = [str14 hasPrefix:@"http://"]; BOOL tag2 = [str14 hasSuffix:@".jpg"]; if (tag1) { NSLog(@"是http://前缀,说明他是一个网址"); } else { NSLog(@"不是http://前缀,说明他不是一个网址"); } if (tag2) { NSLog(@"是.jpg后缀,说明他是一张jpg图片"); } else { NSLog(@"不是.jpg后缀,说明他不是一张jpg图片"); }
8.数字串转化为数字
NSString * strNum = @"5211314"; int ret = [strNum intValue]; NSLog(@"strNum:%d",ret);
9.大小写转换
①把所有小写字母转成大写
NSString * str = @"If you do not leave me.I will by yourside until the life end!"; NSString * upStr = [str uppercaseString]; NSLog(@"所有字母大写 = %@",upStr);
②把所有大写字母转成小写
NSString * str = @"If you do not leave me.I will by yourside until the life end!"; NSString * lowStr = [str lowercaseString]; NSLog(@"所有字母小写 = %@",lowStr);
③把每个单词的首字母变成大写(连续的字符会做为一个整体)
NSString * str = @"If you do not leave me.I will by yourside until the life end!"; NSString * capStr = [str capitalizedString]; NSLog(@"每个单词首字母大写 = %@",capStr);
10.从本地读取文件内容
/** * @param path 文件的路径 * @param enc 文字编码 * @param error 读取文件失败 ,会返回一个错误对象, */ NSError * error = nil; NSString * path = @"/Users/qianfeng/Desktop/未命名.rtf"; NSString * content = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error]; if (error) { NSLog(@"error = %@",error); } else { NSLog(@"%@",content); }
二、可变字符串
1.在指定位置插入子串
NSMutableString * mutableStr = [[NSMutableString alloc] initWithString:@"Hello I love you"]; [mutableStr insertString:@"World" atIndex:6]; NSLog(@"%@", mutableStr);
2.删除指定范围的子串
NSMutableString * mutableStr = [[NSMutableString alloc] initWithString:@"Hello I love you"]; NSRange range = {6,8}; [mutableStr deleteCharactersInRange:range]; NSLog(@"%@", mutableStr);
3.追加子串
NSMutableString * mutableStr = [[NSMutableString alloc] initWithString:@"Hello I love you"]; [mutableStr appendFormat:@" %d %.2f %@",1800,3.15,@"我爱你"]; NSLog(@"%@", mutableStr);
4.修改字符串
NSMutableString * mutableStr = [[NSMutableString alloc] initWithString:@"Hello I love you"]; [mutableStr setString:@"God bye"]; NSLog(@"%@", mutableStr);
5.替换字符串
NSMutableString * mutableStr = [[NSMutableString alloc] initWithString:@"Hello I love you"]; NSRange range = {6,7}; [mutableStr replaceCharactersInRange:range withString:@"world"]; NSLog(@"%@", mutableStr);
小练习
1.从字符串@”Welcome to Beijing!”, 中提取第3到第10个字符,生成字符串。
2.将可变字符串@”When I was young, I loved a girl in neighbor class.”中,从young提取到girl。替换成@”a teacher, I rather to teach student”。(要求不能手动计数)
参考答案(一万个读者有一万个哈姆雷特,一万个程序员有一万种编码风格,答案仅供参考)
1.从字符串@”Welcome to Beijing!”, 中提取第3到第10个字符,生成字符串。
NSString * str = @"Welcome to Beijing!"; NSRange range = {2,8}; NSString * strNew = [str substringWithRange:range]; NSLog(@"%@",str5);
2.将可变字符串@”When I was young, I loved a girl in neighbor class.”中,从young提取到girl。替换成@”a teacher, I rather to teach student “。(要求不能手动计数)
NSMutableString * mutableStr = [[NSMutableString alloc] initWithString:@"When I was young, I loved a girl in neighbor class."]; NSString * str = @"a teacher, I rather to teach student "; NSString * startStr = @"young"; NSString * endStr = @"girl"; //求出起始位置 NSRange startRange = [mutableStr rangeOfString:startStr]; //求出截至位置 NSRange endRange = [mutableStr rangeOfString:endStr]; //求出需要替换的字符串位置 NSRange range = {startRange.location,endRange.location - startRange.location + endRange.length}; [mutableStr replaceCharactersInRange:range withString:str]; NSLog(@"%@",mutableStr);
相关文章推荐
- 自学iOS开发系列----OC(Xcode使用)
- 自学iOS开发系列----OC(数组)
- 自学iOS开发系列----OC(类和对象)
- 自学iOS开发系列----OC(继承)
- 自学iOS开发系列----OC(属性、点语法、修饰符)
- 自学iOS开发系列----OC(协议和委托代理)
- 自学iOS开发系列----OC(内存管理)
- 自学iOS开发系列----C语言(内存及字符串)
- 自学iOS开发系列----OC(block)
- 自学iOS开发系列----OC(类别和扩展)
- 自学iOS开发系列----OC(字典)
- 自学iOS开发系列----OC(文件管理类、文件句柄类)
- 小白学开发(iOS)OC_ 字符串写入文件(2015-08-13)
- iOS开发系列--C语言之数组和字符串
- iOS开发系列—Objective-C之基础概览oc格式化输出例子
- 小白学开发(iOS)OC_ 可变长度字符串(2015-08-14)
- 自学iOS开发系列----C语言(指针及递归函数)
- 【IOS 开发学习总结-OC-25】★★★objective-c——foundation 框架之字符串
- iOS开发系列—Objective-C之内存管理oc
- iOS 开发 OC编程 属性和字符串练习