/*
//不可变字符串NSString.
//1.初始化
//使用字符串常量初始化
NSString *s1=@"hello";
//初始化方法
NSString *s2=[[NSString alloc] initWithFormat:@"%@world",s1];
NSLog(@"s2:%@",s2);
//使用一个已经创建好的字符串,初始化另外一个字符串
NSString *s3 =[[NSString alloc] initWithString:s2];
NSLog(@"s3:%@",s3);
//使用便利构造器创建字符串
NSString *s4=[NSString stringWithFormat:@"%@,世界你好",s3];
NSLog(@"s4:%@",s4);
NSString *s5=[NSString stringWithString:s4];
NSLog(@"s5:%@",s5);
//常用的方法
//1.length(长度)返回字符串长度
//NSInteger n1=[s1 length];
NSLog(@"%ld",[s2 length]);
//2.characterAtIndex://返回输入位置的字符
NSLog(@"%c",[s1 characterAtIndex:1]);
//3.hasPrefix. //判断输入的字符串是不是s5的前缀,如果是返回YES,不是返回NO
BOOL b1= [s5 hasPrefix:@"hello"];
NSLog(@"%d",b1);
//4.hasSyffix://判断输入的字符串是不是s5的后缀,如果是返回YES,不是返回NO
BOOL b2=[s5 hasPrefix:@"你好"];
NSLog(@"%d",b2);
//5.rangOfString://返回输入字符串在s5中的范围(位置和长度)
//表示范围的结构体是NSRange
NSRange range1=[s5 rangeOfString:@"hello"];
NSLog(@"位置:%lu,长度:%lu",range1.location,range1.length);
//6.stringWithRange://传入一个范围NSRange,通过这个范围截取s5中的字串,并返回
NSRange range2={2,3}; //位置2 长度为3
NSString *s6=[s5 substringWithRange:range2];
NSLog(@"s6:%@",s6);
NSString *s7=@"abcdefg";
//7.subStringFromIndex://传入一个下标值,将s7中从传入下标值开始一直到结束的字串返回
//返回的字串包含该下标的字符
NSString *s8=[s7 substringFromIndex:2];
NSLog(@"s8:%@",s8);
//8.substringToIndex://传入一个下标值,将s7中从头到该下标的字串返回
//不包含该下标的字符
NSString *s9=[s7 substringToIndex:5];
NSLog(@"s9:%@",s9);
//9.stringByAppendingString://将参数字符串拼接到s7的后面
NSString *s10=[s7 stringByAppendingString:@"hijk"];
NSLog(@"s10:%@",s10);
//10.isEqualToString://判断两个字符串是否相等,是YES(1),否NO(0)
BOOL b3=[s7 isEqualToString:@"abc"];
NSLog(@"b3:%d",b3);
//11.compare;//比较两个字符串大小,如果是升序返回-1,相同返回0,降序返回1
NSComparisonResult m=[s7 compare:@"defg"];
NSLog(@"m:%ld",m);
//12.uppercaseString//小写换大写
NSString *s11=[s7 uppercaseString];
NSLog(@"s11:%@",s11);
//13.lowercaseString//大写换小写
NSString *s12=[s11 lowercaseString];
NSLog(@"s12:%@",s12);
//14.capitalizedString//首字母换大写,其余换小写
NSString *s13= [s7 capitalizedString];
NSLog(@"s13:%@",s13);
//15.intValue//找到第一个不是数字的字符位置,将前面的数字字符转换成整形并返回
NSString *s14=@"12m3";
int i1=[s14 intValue];
NSLog(@"i1:%d",i1);
//16.floatValue//将字符串中浮点型字符转换成浮点型
NSString *s15=@"12.56";
float f1=[s15 floatValue];
NSLog(@"f1:%f",f1);
//给定一个图片文件名,判断字符串中是否以“png”结尾,如果是就替换成“jpg”,如果 不是,就拼接”.jpg”
NSString *strPic=@"abcd";
bool b= [strPic hasPrefix:@"png"];
if(b){
NSInteger index=[strPic length];
NSString *st1= [strPic substringFromIndex:index-3];
NSLog(@"%@",st1);
NSString *st2=[st1 stringByAppendingString:@"jpg"];
NSLog(@"%@",st2);
}else{
NSString *st = [strPic stringByAppendingString:@".jpg"];
NSLog(@"%@",st);
}
//NSString是不可变的字符串,字符串一旦创建就不能改变
//NSMutableString
//可变字符串继承不可变字符串,同时继承了所有的方法
NSMutableString *ms1=[[NSMutableString alloc] initWithFormat:@"abcdefg"];
NSMutableString *ms2=[ NSMutableString stringWithFormat:@"abcdefg"];
// NSMutableString *ms3=@"123456";只有这个不可以用
//可变字符串拼接,直接拼接到原串后面
[ms1 appendString:@"hijk"];
NSLog(@"ms1:%@",ms1);
//替换(替换和被替换之间没有数量限制,如下替换前3个,是用给出的所有替换前3个,)
NSRange range3={0,3};
[ms1 replaceCharactersInRange:range3 withString:@"yuqqq"];
NSLog(@"%@",ms1);
//在指定位置插入字符串
[ms1 insertString:@"www" atIndex:2];
NSLog(@"%@",ms1);
//删除指定范围字符串
NSRange range4={2,3};
[ms1 deleteCharactersInRange:range4];
//[ms1 deleteCharactersInRange:NSMakeRange(2, 3)];这种方法也可以,不需要上面的NSRange
NSLog(@"%@",ms1);