//第一部分:不可变字符串:NSString
// 字面量,
// NSString *str =@"y玩anglin";
// NSString *arr=@[@"1", @"2"];
//1. 字符串长度
// NSLog(@"%ld",str.length);
// 结果: 2015-07-20 17:32:27.374 OC练习[1596:97283] 7
// 2.通过指定下标获取字符内容
// @"%C"中大写的C可以输出汉字 c不可以
// NSLog(@"%C", [str characterAtIndex:1]);
// 结果: 2015-07-20 17:37:56.737 OC练习[1620:98525]玩
// 3.通过alloc和init创建一个空的字符串
// NSString *str =[[NSString alloc] init];
// 4.通过alloc和initWithSpring初始化方法来自定义一个对象
/*
NSString *str =[[NSString alloc] initWithString:@"山山来了"];
NSLog(@"%@",str);
// 结果 :2015-07-20 17:42:43.639 OC练习[1636:99535]山山来了
*/
// 5.用便利构造器创建字符串对像
// NSString *str =[NSString stringWithString:@"山山来了"];
// NSLog(@"%@",str);
// 结果:2015-07-20 17:47:52.783 OC练习[1654:100807]山山来了
/*
3-5
创建字符串对象:可以用便利构造器的方法,也可以用正常方法,但系统更倾向于用字面量的方式完成对象的创建
*/
// 6.substringFromIndex :从哪开始截取,到最后,包括下标位置
// NSString *str =@"nihao,wodemingzijiao1";
// NSLog(@"%@",[str substringFromIndex:5]);
// 结果: 2015-07-20 17:56:28.408 OC练习[1662:102656] ,wodemingzijiao1
// 7.substringToIndex :从开始截取到指定位置,不包括下标位置
// NSLog(@"%@",[str substringToIndex:7]);
// 结果 :2015-07-20 18:00:25.539 OC练习[1695:103793] nihao,w
// 8.substringWithRange:NSMakeRange:输出范围字符串,NSRange 是一个结构体,提供了两个变量,一个是起始位置:location,第二个是长度
// NSRange range ={3 , 7};
// NSLog(@"%@",[str substringWithRange:range]);
// //或者
// NSLog(@"%@",[str substringWithRange:NSMakeRange(3, 7)]);
// // 结果都是:2015-07-20 19:01:31.374 OC练习[1717:107047] ao,wode
// 9.isEqualToString:判断两个字符串内容是否相同:BOOL类型
// NSString *str1 =@"ni hao";
// NSString *str2 =@"ni hao";
// NSLog(@"%d",[str1 isEqualToString:str2]);
//比较两个字符串的地址是否相同
// if(str1 == str2 )
// 10.hasPrefix:判断是否有前缀 ,是BOOL类型,前缀是prefix内的内容则为真,否则为假
// NSString *str =@"liushanshan";
// NSString *prefix =@"liu";
// NSLog(@"%d",[str hasPrefix:prefix]);
// 结果: 2015-07-20 19:18:57.680 OC练习[1815:113912] 1
// 11.hasSuffix 判断是否有后缀,是BOOL类型,前缀是suffix内的内容则为真,否则为假
// NSString *suffix =@"shan";
// NSLog(@"%d",[str hasSuffix:suffix]);
// 结果: 2015-07-20 19:18:57.680 OC练习[1815:113912] 1
// 12.integerValue :把字符串变成基本数据类型,但是遇到字母停止
// NSString *strNum=@"123p5";
// NSInteger num =[strNum integerValue];
// NSLog(@"%ld",num);
// 结果:2015-07-20 19:23:19.272 OC练习[1823:115089] 123
// 13.stringWithFormat :可以把任意类型转化成字符串,可以进行拼接
// CGFloat g=3.14;
// NSInteger a =100;
// NSString *str =[NSString stringWithFormat:@"%@, %ld ,%g, %@",@"不好",a, g, @"刘山山sdaJ" ];
// NSLog(@"%@",str);
// 结果 : 2015-07-20 19:29:43.092 OC练习[1844:116518]不好, 100 ,3.14, 刘山山sdaJ
// 14.uppercaseString :所有都大写
// lowercaseString :所有全小写
// capitalizedString:首字母大写空格后大写, 其他全变小写
// NSString *str= @"liuShan sHan";
// NSLog(@"%@",str.uppercaseString);
// 结果:2015-07-20 19:36:34.126 OC练习[1858:118186] LIUSHAN SHAN
// NSLog(@"%@",str.lowercaseString);
// 结果 :2015-07-20 19:36:34.126 OC练习[1858:118186] liushan shan
// NSLog(@"%@",str.capitalizedString);
// 结果 :2015-07-20 19:36:34.127 OC练习[1858:118186] Liushan Shan
// 15.compare :比较两个字符串:对应只有三个结果,一个是ASC升序,结果是-1,一个是same相同的结果0,降序DESE,结果是1
// NSString *str =@"buhao";
// NSString *newStr = @"nihao";
// NSLog(@"%ld",[str compare:newStr]);
// 结果 :2015-07-20 19:39:43.387 OC练习[1866:119001] -1
// 16.字符串的拼接:stringByAppendingString
// NSString *str = @"liushanshan";
// NSString *str1 =@"yanlin";
// NSString *newStr =[str stringByAppendingString:str1];
// NSLog(@"%@",newStr);
// 结果: 2015-07-20 19:43:38.882 OC练习[1874:119958] liushanshanyanlin
// 17.stringByReplacingOccurrencesOfString:替换
//第一个参数 :原字符串的部分内容
//第二个参数 :要替换的内容
// NSString *str =@"意义没事喜欢玩游戏";
// NSString *strNew =[str stringByReplacingOccurrencesOfString:@"意义" withString:@"流星雨"];
// NSLog(@"%@",strNew);
// 结果:2015-07-20 19:51:35.319 OC练习[1892:121856]流星雨没事喜欢玩游戏
//第二部分
// NSString:不可变字符串
// NSMutableString:可变字符串,他是NSString的子类
//使用字面量的方式创建的是不可变字符串,只能拿不可变的指针来接收
// NSMutableArray *str =@"yanglin";
// NSMutableArray *str = [[NSMutableString alloc] initWithString:@"wangwu"];
// NSLog(@"%@",str);
// 18.插入 insertString:插入内容,atIndex :插入位置下标
// NSMutableString *str=[NSMutableString stringWithString:@"nihao,wo deming zi jiao yanglin"];
// [str insertString:@"商帅" atIndex:3];
// NSLog(@"%@", str);
// 结果: 2015-07-20 19:57:42.854 OC练习[1911:123322] nih商帅ao,wo deming zi jiao yanglin
// 19. 范围性替换 NSRange 是一个结构体,提供了两个变量,一个是起始位置:location,第二个是长度
// NSRange range ={3,7};
// [str replaceCharactersInRange:range withString:@"hao"];
// NSLog(@"%@",str);
// 结果 :2015-07-20 20:12:04.148 OC练习[1930:125103] nihhaoeming zi jiao yanglin
// 20 .setString:全替换
// [str setString:@"11"];
// NSLog(@"%@",str);
// 结果 :2015-07-20 20:12:54.101 OC练习[1938:125357] 11
// 21 .appendString :拼接
// [str appendString:@"11"];
// NSLog(@"%@",str);
// 结果: 2015-07-20 20:13:55.438 OC练习[1954:125627] nihhaoeming zi jiao yanglin11
//可变字符串在方法上一般都是没有返回值的,都是对自己本身的内容进行修改,在访问的时候字符串已经发生了变化,但是不可变字符串会产生一个新的字符串,一般方法会返回NSString *,
/*
练习
给定一个图片的文件名,判断字符串中是否以"png"结尾,如果是就替换成"jpg",如果不是,就拼接".jpg"
*/
// NSString *name =@"dsakldj.pn";
// if ([name hasSuffix:@".png"]) {
// NSString *strNew =[name stringByReplacingOccurrencesOfString:@".png" withString:@".jpg"];
// NSLog(@"%@",strNew);
// }else{
// NSString *strNew =[name stringByAppendingString:@".jpg"];
// NSLog(@"%@",strNew);
// }
// 结果:2015-07-20 20:20:51.608 OC练习[1981:127054] dsakldj.pn.jpg