/*
NSString(不可变) && NSMutableString(可变)
1.创建字符串
2,字符串拼接,截取,比较计算长度,替换,前缀后缀,OC对象类型和C语言字符串类型的转化
*/
************************ 一,创建字符串 ****************************
//1,最简单的创建方式
NSString * str1 = @"hello world";//str1 指向常量区
str1 = @"哈哈"; //str 重指向
//2,废柴写法
NSString *str2 = [[NSString alloc]initWithString:@"you are beautiful"];
注意:str2 虽然alloc了但是仍然指向常量区
//3.最牛逼,最正统的写法
NSString *str3 = [[NSString alloc]initWithFormat:@"%@",str1];//实例化方法
NSS *str4 = [NSString stringWithFormat:@"你好"];//类方法
// str3 str4 都是指向堆区空间,format 方法的使用可以参考NSlog
**********************二, 字符串长度***************************
//length :计算字符串长度,返回值是NSIngter
NSString *str5 = @"hgcd2324joijb";
NSSIngter len = [str5 length];
NSLog(@"len = %lu",len);
***********************三,前缀,后缀***********************
NSString *str6= [NSString stringWithFormat:@"http://www.baidu.com"];
//判断此字符串是否连接的规则
//关键字1 prefix 判断前缀 返回值为bool类型
Bool isPrefix = [str6 hasPrefix:@"http"];
NSLog(@"isPrefix = %d",isPrefix);
//关键字2 suffix 判断后缀返回值为bool
BOOL issuffix = [str6 hasSuffix:".cn"];
NSLog(isPrefix && isSuffix ?@"此链接是正确的":@"此链接不正确");
*********************四,查找字符串的范围************************
NSString *str7 = [[NSString alloc]initWithFormat:@"you are beautiful"];
//判断str7 中是否含有are这个字符串?????
//新的数据类型:NSRange结构体类型(俩个成员变量),location:字符串开始的位置 length:字符串的长度
NSRange rang = [str7 rangeOfString:@"are"];
NSLog("子串的起始位置location = %lu,子串的长度length = %lu",rang.location,rang.length);
//一旦子串不存在母串中,输出location就会输出随机值
NSLog(range.length == 0 ? @"查找成功" : @"查找失败");
********************五,获取字符串*********************
//有三种方法 关键字sub to from
NSString *str8 = @"nizhenbang";
//1,给定字符串开始位置,截取到最后一个字符
NSString *subStr1 = [str8 substringFromIndex:6];
NSLog(@"subStr1 = %@",subStr1);
//2.关键字 to 给定子串的结束位置,从第一个开始截取,到指定位置的前一个字符结束(不包含指定位置上的字符)
NSString *substr2 = [str8 substringToIndex:6];
NSLog(@"subStr2 = %@",substr2);
//3.关键字 range 从任意位置截取任意长度的字符串
//先创建range变量,指定要截取的范围
NSRange range1 = [str8 rangeOfString:@"zhen"];
NSString *subStr3 = [str8 substringWithRange:range1];
NSLog(@"subStr3 = %@",subStr3);
//第二种方式,不提前设置range变量 NSMakeRange用来设置range变量(注意非对象类型的不要带*)
NSString *subStr4 = [str8 substringWithRange:NSMakeRange(3, 4)];
*********************六字符串拼接***************************
//关键字 APPending
NSString *str9 = [NSString stringWithFormat:@"HaoRan"];
//在str9后拼接 is a handsome boy
NSString * newStr = [str9 stringByAppendingString:@"is handsome boy"];
NSLog(@"new = %@",newStr);
NSLog(@"str9 = %@",str9);
***********************七字符串替换****************************
NSString *s1 = [NSString stringWithFormat:@"hello hello hi hi"];
//1.用哪个指定字符串替换指定内容,比如将hello替换成haha
NSString *newStr1 = [s1 stringByReplacingOccurrencesOfString:@"hello" withString:@"haha"];
NSLog(@"newStr1 = %@",newStr1);
//2.指定替换长度,比如讲第一个hi改成yes
NSString *newStr2 = [s1 stringByReplacingCharactersInRange:NSMakeRange(15, 2) withString:@"yes"];
NSLog(@"newStr2 = %@",newStr2);
****************8字符串的大小写转换**********************
NSString *s2 = [NSString stringWithFormat:@"i love you"];
//1.全部大写
NSString *upperStr = [s2 uppercaseString];
NSLog(@"%@",upperStr);
//2,全部小写
NSString *lowerStr = [upperStr lowercaseString];
NSLog(@"%@",lowerStr);
//首字母大写
NSString *capitalStr = [lowerStr capitalizedString];
NSLog(@"%@",capitalStr);
***************************字符串比较************************
NSString *s3 = @"aa";
NSString *s4 = @"bb";
//比较关键字:compare
NSComparisonResult result = [s3 compare:s4];
/NSComparisonResult 本质就是NSInteger整形数据,被定义出来只是为了接受对象的比较结果,结果有三种类型-1(升序,前小后大) 0 (值相等) 1(降序 前大后小)
NSLog(@"比较结果:%ld",result);
**********字符串,数值转换*********************
int a = 80;
//基本类型 --> 字符串对象类型
NSString *s6 = @"110";
//1. C语言字符串
const char *str = [s6 UTF8String];
//C语言中所有数值类型都可转换
float num1 = [s6 floatValue];
int num2 = [s6 intValue];
double num3 = [s6 doubleValue];
****************************************************************
//NSString的子类NSMutableString
//可变字符串:NSMutableString,对可变字符串做增删改操作,就会对可辨字符串直接进行操作
NSMutableString *mStr1 = [NSMutableString stringWithFormat:@"hello"];
//1,拼接字符串
[mStr1 appendFormat:@"world"];
NSLog(@"mStr1 = %@",mStr1);
//2.删除
[mStr1 deleteCharactersInRange:[mStr1 rangeOfString:@"world"]];
//3.插入字符串
[mStr1 insertString:@"girl" atIndex:5];
NSLog(@"mStr1 = %@",mStr1);
//可变字符串的初始化方式
NSMutableString *mStr2 = [NSMutableString stringWithCapacity:100];
//mStr = @"fkdsj323";可变字符串不能直接赋值(直接赋值的在常量区)
[mStr2 appendString:@"你真帅"];
NSLog(@"mStr2 = %@",mStr2);
//前面插入帅哥 后面拼接 约吗
[mStr2 insertString:@"帅哥" atIndex:0];
[mStr2 appendString:@"约吗?"];
NSLog(@"mStr2 = %@",mStr2);
//替换
NSRange range3 = [mStr2 rangeOfString:@"约吗"];
[mStr2 replaceCharactersInRange: range3 withString:@"不约"];
//重置字符串
[mStr2 setString:@"美女 你真瘦"];
NSLog(@"mStr = %@",mStr2);
//注意 setstring:只是重新修改了指针所指想的空间的值,并没有发生指针重指向的问题//下面使用了便利构造器,内部有alloc ,重新开辟了空间
mStr2 = [NSMutableString stringWithString:@"美女"]