OC_06字符串
2016-08-11 18:02
330 查看
这一章我们来学习一下,字符串。
字符串分为:可变字符串和不可变字符串。
首先,我们来看NSString 不可变字符串的用法
浅拷贝 和 深拷贝
浅拷贝 : 对象和拷贝的内容共用一份实体,仅仅是引用的变量名称不一样
深拷贝 : 指原对象和拷贝的对象相互独立,其中任何一个对象的改动都不会对另一个对象造成影响
*/
好,学习完不可变字符串的基本用法,我们来看看 可变字符串。
字符串分为:可变字符串和不可变字符串。
首先,我们来看NSString 不可变字符串的用法
//1.初始化一个字符串对象 // NSString *string1 = @"iBokanWisdom"; NSString *string2 = [NSString stringWithFormat:@"WeiJian"]; //NSString *string3 = [NSString stringWithFormat:@"%@,%@",@"ZhiJie",@"WeiJian"]; // NSString *string3 = [[NSString alloc]initWithString:@"iBokanWisdom"]; redundant 多余 //使用NSString的类方法来创建字符串 + (instancetype)stringWithFormat :@“格式化标示符” NSString *string4 = [ NSString stringWithFormat:@"%@,%d,%f,hi guy",@"Jack",5,6.7]; // NSLog(@"%s",__func__); NSLog(@"%@",string2); //NSLog(@"%@",string4); NSString *string5 = @"Barry"; NSString *string6 = @" is so handsome!"; NSString *string7 = [NSString stringWithFormat:@"%@%@",string5,string6]; NSLog(@"%@",string7); // lldb 用po 对象 就可以打印出来了 //从本地文件读取字符串 NSString *path1 = @"/Users/ibokan/Desktop/OC_X/OC_06_01/OC_06_01/hello.html"; NSError *error; NSString *string8 = [NSString stringWithContentsOfFile:path1 encoding:NSUTF8StringEncoding error:&error]; // NSLog(@"string8 = %@,error = %@",string8,error); //从网络读取字符串 NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"]; error = nil; // NSString *string9 = [NSString stringWithContentsOfURL:url encoding:4 error:&error]; // NSLog(@"string9 = %@",string9); //字符串的操作 NSString *string10 = @"你们都是怪兽么,我是超人啊!"; //字符串长度 NSUInteger length = [string10 length]; //字符串的截取 NSString *subString1 = [string10 substringToIndex:6]; NSLog(@"subString1 = %@",subString1); //获取开头到此位置的字符串,不包括to的位置,如6,不包括第6位 NSString *subString2 = [string10 substringFromIndex:8]; //获取从此字符开始到结尾,包含from位置 NSLog(@"%@",subString2); NSString *substring3 = [string10 substringWithRange: NSMakeRange(4, 2) ];// (第N个字符串,字符串长度) //如何获取字符串中的某个字符 NSString *string11 = @"abcdefg"; char c = [string11 characterAtIndex:0]; // 根据字符串中的位置 //index来获得一个字符,注意字符串的索引是从0开始。 NSLog(@"%c",c); //判断两个字符串是否相等 if (subString2 == substring3) { //内容和指针都相等的时候才相等 NSLog(@"subString2 和 substring3 相等"); } else{ NSLog(@"subString2 和 subString3 不相等"); }
/* 如何让两个字符串的指针 和 内容都相同?
浅拷贝 和 深拷贝
浅拷贝 : 对象和拷贝的内容共用一份实体,仅仅是引用的变量名称不一样
深拷贝 : 指原对象和拷贝的对象相互独立,其中任何一个对象的改动都不会对另一个对象造成影响
*/
NSString *subStirng5 = [NSString stringWithFormat:@"%@",subString2]; NSString *subString4 = [NSString stringWithString:subString2]; if (subString2 == subString4) { // 内容和指针都相同 NSLog(@"subString4 和 subString2 相等"); } else{ NSLog(@"subString4 和 subString2 不相等"); } //在实际开发过程中,我们通常只需要比较两个字符串的内容是否相等 if ([subString2 isEqualToString:subString4]) { NSLog(@"subString4 和 subString2 内容相等"); } else{ NSLog(@"subString4 和 subString2 内容不相等"); } //比较两个字符串的大小 NSString *cmpString1 = @"hehehehe"; NSString *cmpString2= @"hahahaha"; NSComparisonResult result = [cmpString1 compare:cmpString2]; switch (result) { case NSOrderedAscending: { NSLog(@"cmpString1 < cmpString2, 升序"); break; } case NSOrderedSame: { NSLog(@"cmpString1 = cmpString2, 相等"); break; } case NSOrderedDescending:{ NSLog(@"cmpString1 > cmpString2, 降序"); break; } } //根据字符串拿到对应的range NSRange range = [string10 rangeOfString:@"怪兽"]; NSLog(@"%@",[NSValue valueWithRange:range]); //只输出第一个遇到的该字符的位置 及 该字符的长度 NSRange range1 = [string10 rangeOfString:@"是"]; NSLog(@"%ld,%ld",range1.location,range1.length); //判断字符串中是否有xx前缀 或 xx后缀 NSString *string12 = @"http://www.baidu.com"; if ([string12 hasPrefix:@"http://"]){ NSLog(@"含有此前缀"); } else{ NSLog(@"不含有此前缀"); } //判断是否为 .jpg 或 .png 后缀 NSStr b734 ing *string13 = @"xxxxx.jpg"; if([string13 hasSuffix:@".jpg"] || [string13 hasSuffix:@".png"]||[string13 hasSuffix:@".bmp"]){ NSLog(@"含有此后缀"); } else { NSLog(@"不含有此后缀"); } //字符串 拼接 NSString *string14 = @"www.baidu.com"; // [NSString stringWithFormat:@"http://%@",string14]; NSString *string15 = [@"http://" stringByAppendingString:string14]; // http://pic.pptbz.com/pptpic/201204/2012041411433867_S.jpg NSString *string16 = @"http://"; NSString *string17 = @"pic.pptbz.com/pptpic/201204/2012041411433867_S.jpg"; NSString *string18 = [string16 stringByAppendingFormat:@"%@",string17]; //连接两个字符串 ,并且第二个字符串是按一定格式传进来的 NSString *string19 = [string16 stringByAppendingPathComponent:string17]; NSString *imagePath = @" http://pic.pptbz.com/pptpic/201204/2012041411433867_S.jpg"; //图片自己随便找吧!~图片路径复制 imagePath = [imagePath lastPathComponent]; NSString *theImageName = @"Jack"; theImageName = [theImageName stringByAppendingPathExtension:@"png"]; //字符串的其他用法 //1.字符串的转换函数 NSString *str = @"111addd33"; int a1 = [str intValue]; NSLog(@"%d",a1); //只会输出 111 若第一个是字母,输出 0 //2.字符串的大小写转换 NSString *str2 = @"aAaBb"; NSString *str3 = [str2 uppercaseString]; //将全部小写字母转换为大写字母 NSString *str4 = [str2 lowercaseString]; //将全部大写字母转换为小写字母 NSString *str5 = [str2 capitalizedString]; //将首字符改成大写,其余小写 NSString *str6 = [str2 stringByReplacingOccurrencesOfString:@"Bb" withString:@"Dd"];//将Bb换Dd NSString *str7 = [str2 stringByReplacingCharactersInRange:NSMakeRange(1, 2) withString:@"GGG"]; //多个GGG直接插入 NSString *str8 = @"aa-bb-cc-dd-ee"; NSArray *array = [str8 componentsSeparatedByString:@"-"]; //以separator 为分隔符,将原字符串的内容进行分割,分割得到的结果放到一个数组里,作为返回值 } return 0; }
好,学习完不可变字符串的基本用法,我们来看看 可变字符串。
//NSMutableString 可变字符串 NSMutableString *mString = [NSMutableString stringWithString:@"hello"]; //创建字符串初始化赋值 stringWithString NSMutableString *mString1 = [NSMutableString stringWithFormat:@"%@",mString]; NSMutableString *mString2 = [NSMutableString stringWithContentsOfFile:@"" encoding:4 error:nil]; NSMutableString *mString3 = [NSMutableString stringWithContentsOfURL:@"" encoding:4 error:nil]; //可变字符串独特的初始化方法,初始化一个空间为100的可变字符串 NSMutableString *mString4 = [[NSMutableString alloc] initWithCapacity:100]; //将C语言的字符串转换成OC的字符串 // NSMutableString *mString5 = [[NSString alloc]initWithCharacters:<#(const unichar *)#> length:<#(NSUInteger)#>] NSMutableString *targetString =[NSMutableString stringWithString:@"呵呵,我靠"] ; NSRange range = [targetString rangeOfString:@"靠"]; //替代 [targetString replaceCharactersInRange:range withString:@"*"]; NSLog(@"%@",targetString); //增 //在指定位置去插入一个字符串 [targetString insertString:@"haha" atIndex:3]; //在字符串末尾添加一个字符串 [targetString appendString:@"Your mother boom"]; //在字符串的末尾添加多个字符串 [targetString appendFormat:@"%@%@%@",@"Your father booom",@"Your brother boom",@"WeiJian boom"]; //删 [targetString deleteCharactersInRange:NSMakeRange(3, 2)]; // NSLog(@"%@",targetString); } return 0; }
运行结果大家就直接打印或者断点po一下就出来了,在这,我就不为大家截图了。
相关文章推荐
- NSString与C字符串之间的相互转换
- Objective-C中字符串NSString的常用操作方法总结
- iOS中日期和字符串的相互转化
- iOS开发Extra系列:NSString***
- NSString 用法2
- NSString 用法3
- OC基本数据类型常用方法小结
- IOS字符串拼接方法小结
- Objective_C基础字符串总结
- ios NSString 使用
- OC学习之--字符串类&数组类&值对象
- 字符串处理,数据类型
- 通过字符串添加对应对象
- IOS开发-Foundation笔记
- NSString为啥要使用Copy属性
- 02 OC之 字符串的使用
- 字面量语法的好处
- 字符串的获取
- isEqualToString的内部实现
- 字符串的判断