//一. 不可变字符串创建的方法
//1. 字面量
NSString *str1 =@"hello world";
//2. 通过alloc 和init 创建一个空字符串.
NSString *str2 = [[NSString alloc]init];
str2 = @"hello world";
NSLog(@"%@",str2);
//3. 这个方法是多余的 , 系统会 提示用@""直接赋值 .
NSString *str3 = [[NSString alloc]initWithString:@"hello"];
NSLog(@"%@",str3);
//4. 系统提供的便利构造器的方法.
NSString *str_4 = [NSString stringWithString:@"哈哈"];
NSLog(@"%@",str_4);
//5. 用便利构造器和初始化方法创建字符串对象是可以,也能正常使用,但是系统还是更倾向于用字面量的方法来创建对象.
NSString *stu_5 = [NSString stringWithFormat:@"嘿嘿"];
//二. 不可变字符串的属性和方法
//1 不可变字符串系统设定的属性lenth -字符串长度
NSString *str = @"你好,欢迎学习OC!";
NSLog(@"%ld",str.length);
//2 不可变字符串的方法:
// 1. characterAtIndex -- 获取内容
//通过指定下标获取字符内容.小写的c获取英文部分,大写的C可以获取汉字.
NSLog(@"%c",[str characterAtIndex:0]);
// 2. substringFromIndex -- 截取
//从哪开始截取,一直到最后,也包括下标的内容.
NSString *str =@"你好,欢迎学习OC!";
NSLog(@"substringFormIndex:%@",[str substringFromIndex:5]);
// 打印结果为: 学习OC!
// 3. substringToIndex -- 截取
// 从0开始截取5个.
NSString *str = @"你好,欢迎学习OC!";
NSLog(@"substringToIndex:%@",[str substringToIndex:5]);
// 打印结果为: 你好,欢迎
// 4. substringWithRange -- 截取
// NSRange是一个结构体,提供了两个成员变量,第一个是位置,第二个是长度.
从NSRange的第一个参数开始截取,截取的长度是第二个参数.可以提前写出NSRange,也可以在过程中创建一个.
NSString *str = @"你好,欢迎学习OC!";
NSRange range = {3,7};
NSLog(@"substringWithRange1:%@",[str substringWithRange:range]);
NSLog(@"substringWithRange2:%@",[str substringWithRange:NSMakeRange(3,7)]);
// 打印结果为: 欢迎学习OC!
// 5. isEqualToString -- 判断相同
// 判断两个字符串内容是否相同.
NSString *str1 =@"刘狗儿";
NSString *str2 =@"刘傻儿";
NSLog(@"%d",[str1 isEqualToString:str2]);
// 打印结果为:0
// 比较两个字符串的地址是否相同.
if(str1 == str2){
NSLog(@"%d",1);
}
// 6. hasPrefix hasSuffix -- 判断前后缀
// prefix suffix前后缀. 判断前后缀.
NSString *str =@"Liu sha ";
NSString *prefix =@"liu";
NSLog(@"%d",[str hasPrefix:prefix]);
// 打印结果为: 0
// 7. integerValue intValue -- 转换
// 把字符串 -> 基本数据类型.
NSString *strNum =@"12345";
NSInteger num1 = [strNum integerValue];
NSLog(@"%ld",num1);
// 打印结果为:12345
NSString *strN2 =@"1234pp5";
int num2= [strN2 intValue];
NSLog(@"%d",num2);
// 打印结果为: 1234
// 因为到p时就不转换了,后面的直接舍弃.
// 8.stringWithFormat
// 此方法可以把任意类型转换成字符串类型,可以进行拼接.
CGFloat a =3.14;
NSInteger b =10;
NSString *str = [NSString stringWithFormat:@"%g,%ld,%@",a,b,@"啦啦啦啦啦了~"];
NSLog(@"%@",str);
// 打印结果为:3.14,10,啦啦啦啦啦了~
// 9.uppercaseString -- 全变大写.
lowercaseString -- 全变小写
capitalizedString -- 只有首字母变大写,其余小写.
NSString *str =@"liu xIn qi";
NSLog(@"%@",str.uppercaseString);
// 打印结果为: LIU XIN QI
NSLog(@"%@",str.lowercaseString);
// 打印结果为: liu xin qi
NSLog(@"%@",str.capitalizedString);
// 打印结果为: Liu Xin Qi
// 10.compare -- 比较
// 对应只有三种结果: 一个是ASC升序(-1),一个是same(0),一个是降序DESC(1).
NSString *str1 = @"nihao";
NSString *str2 = @"buhao";
NSLog(@"%ld",[str1compare:str2]);
// 打印结果为: 1
// 11.stringByAppendingString -- 字符串拼接
NSString *str = @"liu";
NSString *str1 = @"xin";
NSString *newstr = [str stringByAppendingString:str1];
NSLog(@"%@",newstr);
// 打印结果为: liuxin
// 11.stringByReplacingOccurrencesOfString -- 字符串的替换
NSString *str = @"haha是傻子";
NSString *newstr = [str stringByReplacingOccurrencesOfString:@"haha" withString:@"刘鑫奇"];
NSLog(@"%@",newstr);
// 打印结果为: 刘鑫奇是傻子
//三. 可变字符串创建的方法
// 不可变字符串: NSString.
// 可变字符串:NSMutableString,他是NSString的子类.
//使用字面量的方式创建的是不可变字符串,只能拿不可变的指针来接受,所以可变字符串不能用字面量来创建.
NSMutableString *str = @"杨林";
// 1. 通过alloc 和init 创建一个空字符串.
NSMutableString *str = [[NSMutableString alloc] init];
NSMutableString *str = [[NSMutableString alloc] initWithString:@"啦啦啦啦"];
// 2. 系统提供的便利构造器的方法.
NSMutableString *str2 = [NSMutableString stringWithString:@"啦啦~"];
NSMutableString *str1 = [NSMutableString stringWithFormat:@"%@",@"哈哈"];
//四. 可变字符串的属性和方法
//因为是NSString的子类,所以他继承父类的所有方法.
NSMutableString *str = [NSMutableString stringWithString:@"12345678910"];
// 1. insertString -- 可变插入
[str insertString:@"啦啦啦" atIndex:8];
NSLog(@"%@",str);
// 打印结果为:12345678啦啦啦910
// 2. replaceCharactersInRange -- 可变替换
[str replaceCharactersInRange:NSMakeRange(14,3) withString:@"你不好"];
NSLog(@"%@",str);
// 打印结果为:12345你不好910
// 3. setString -- 可变设置.
[str setString:@"老奶奶找狗"];
NSLog(@"%@",str);
// 打印结果为:老奶奶找狗
// 4. appendString -- 可变拼接.
[str appendString:@"哈哈哈哈哈哈"];
NSLog(@"%@",str);
// 打印结果为:老奶奶找狗哈哈 哈哈 哈哈
/*
可变字符串在方法上一般都是没有返回值的,都是对自身的内容进行修改,在访问的时候字符串已经发生了改变,但是不可变字符串会产生一个新的字符串,一般方法会返回NSString *;
*/
// 练习.
NSString *str_ =@"fjkgla.png";
//NSString *suffix = @"png";
NSLog(@"原字符串:%@",str_);
if ([str_ hasSuffix:@".png"]) {
NSString *newStr = [str_ stringByReplacingOccurrencesOfString:@".png" withString:@".jpg"];
NSLog(@"新字符串:%@",newStr);
}else{
NSString *newStr = [str_ stringByAppendingString:@".jpg"];
NSLog(@"新字符串:%@",newStr);
}