#warning NSString
#pragma mark - 使用苹果帮助文档
//苹果每次IOS版本的升级,都会添加或更新大量API,并提供相应的参考文档,开发者很难记忆所有API,因此学会使用苹果帮助文档使开发者的一项技能
//打开文档的方法
//Xcode -> Help -> Documentation and API Reference
//文档内包含的基本信息
//Inheerits from 继承自
//Conforms to 遵循什么协议
//Framework 属于哪个框架
//AVailability 什么时候可用
//Declared in 声明在什么头文件里
//Related documents 相关文档
//Sample code 示例代码
//快速打开帮助文档
//在代码中,将鼠标停留在类名或者方法名上, option + 鼠标左键,点击Reference的超链接进入帮助文档;也可以使用command + 鼠标左键,进入头文件,查看类的接口部分
#pragma mark - Foundation框架
//Foundation框架是Cocoa编程,IOS编程的基础框架,包括:字符串,集合,日期,时间等基础类
#pragma mark - 字符串 NSString
//C语言中,字符串是由char (ASCII码)字符组成
//OC中,字符串是由unichar (Unicode)字符组成
//OC中,字符串分为可变字符串和不可变字符串
//NSString,不可变字符串,即:创建以后,内容和长度不能改变
//NSMutableString,可变字符串,即:创建以后,内容还可以修改
#pragma mark - 不可变字符串
NSString *str = @"DuNiang";
NSInteger a = 250;
//参照printf/NSLog
//常用的高大上的方法, 场景:将其他的格式的变量转换为字符串
NSString *str1 = [NSString stringWithFormat:@"%@%ld", str, a];
NSLog(@"str1 = %@", str1);
//求字符串的长度
NSLog(@"str1.length = %ld", str1.length);
#pragma mark - 子串 sub
//从哪
NSString *str2 = [str1 substringFromIndex:2];
NSLog(@"str2 = %@", str2);
//到哪
NSString *str3 = [str1 substringToIndex:5];
NSLog(@"str3 = %@", str3);
//指定范围
// NSRange range = NSMakeRange(2, 4);
// NSString *str4 = [str1 substringWithRange:range];
NSString *str4 = [str1 substringWithRange:NSMakeRange(2, 5)];
NSLog(@"str4 = %@", str4);
#pragma mark - 拼接 append
NSString *str5 = [str1 stringByAppendingString:@"haha"];
NSLog(@"str5 = %@", str5);
NSString *str6 = [str1 stringByAppendingFormat:@"haha%d%@", 6666, @"lala"];
NSLog(@"str6 = %@", str6);
#pragma mark - 替换 replace
//从下标为x开始长度为y的字符串开始替换,替换的的 字符串的长度可以不与被替换的字符串相等
NSString *str7 = [str1 stringByReplacingCharactersInRange:NSMakeRange(2, 5) withString:@"XiaoJie"];
NSLog(@"str7 = %@", str7);
//指定一个子串进行替换
NSString *str8 = [str1 stringByReplacingOccurrencesOfString:@"Niang" withString:@"Teng"];
NSLog(@"str8 = %@", str8);
#pragma mark - 比较 compare
//判断相等 ---用布尔类型 相等输出1,不相等则输出0
BOOL ret = [str1 isEqualToString:@"DuNiang250"];
NSLog(@"ret = %d", ret);
BOOL ret0 = [str1 isEqualToString:@"xxxxx"];
NSLog(@"ret0 = %d", ret0);
//比较大小, 大则输出1, 相等输出0, 小则输出 -1;
NSInteger ret1 = [str1 compare:@"DuLiang"];
NSLog(@"ret1 = %ld", ret1);
NSInteger ret2 = [str1 compare:@"DuNiang250"];
NSLog(@"ret2 = %ld", ret2);
NSInteger ret3 = [str1 compare:@"xxx"];
NSLog(@"ret3 = %ld", ret3);
//NSOrderedDesceding 相当于 1,NSOrderedSame 相当于 0, NSOrderedAscending 相当于 -1;
if (NSOrderedDescending == [str1 compare:@"xxx"]) {
NSLog(@"66666");
} else {
NSLog(@"2222222");
}
//比较开头
BOOL ret4 = [str1 hasPrefix:@"xxx"];
NSLog(@"ret4 = %d", ret4);
//比较结尾
BOOL ret5 = [str1 hasSuffix:@"DuNiang250"];
NSLog(@"ret5 = %d", ret5);
#pragma mark - 杂货铺
//字符串类型转换为其他类型
//NSUInteger 无符号的,既没有负数,NSInteger是有符号的
//int:当使用int类型定义变量的时候,可以像写C程序一样,用int也可以用NSInteger,推荐使用NSInteger ,因为这样就不用考虑设备是32位还是64位了。
NSString *str9 = @"6666";
NSInteger ret6 = [str9 integerValue];
NSLog(@"ret6 = %ld", ret6);
//大小写转换
//1.转小写
NSString *str10 = [str1 lowercaseString];
NSLog(@"str10 = %@", str10);
//2.转大写
NSString *str11 = [str1 uppercaseString];
NSLog(@"str11 = %@", str11);
//3.首字母转大写
NSString *str12 = [str10 capitalizedString];
NSLog(@"str12 = %@", str12);
#pragma mark - 可变字符串
//NSMutableString是NSString的子类
NSMutableString *strM = [NSMutableString stringWithFormat:@"DuNiang"];
//插入
//[strM insertString:@"要插入的字符串" atIndex:要插入的位置];
[strM insertString:@"Love" atIndex:2];
NSLog(@"strM = %@", strM);
//删除
//delete 和 remove的区别
//delete是删除,东西不在任何一个区
//remove是移除,你可以将东西从A区移动到B区,但东西仍还在
//NSRange range1 = {下标,删除的字符串的长度};
[strM deleteCharactersInRange:NSMakeRange(6, 0)];
NSLog(@"strM = %@", strM);
#pragma mark - 可变不可变注意事项
//1.不可变字符串的修改操作,本质就是得到一个新的字符串
//2.不可变字符串的修改方法以string开头,有返回值
//3.可变字符串的修改方法没有返回值,修改原字符串