OC_NSString & NSMutableString

今天一天都在讲NSString,脑容量都不够用了…….
字符串分可变字符串NSMutableString和不可变字符串NSString.
一:不可变字符串:NSString
// 操作一个不可变的字符串,都会产生一个新的字符串,而且原字符串不改变
1 : 创建对象方法
1 ) 通过字面量的方法来快速创建一个对象
NSString *str = @”你好”;
NSLog( @”%@”,str );
2) 通过alloc,init的方式创建一个字符串
NSString *str = [ [ NSString alloc ] init ]; // 空字符串
NSString *str = [NSString stringWithString:@”你好”]; // 带初值
3)使用便利构造器
NSString *str2 = [NSString string]; // 空字符串
NSString *str1 = [NSString stringWithString:@”你好”]; // 带初值
注意 : 2),3)创建方式,虽然可以正常输出,但不建议使用
2. 计算字符串长度
NSString *str = @”jksjivn”;
NSLog(@”%ld”,str.length);
3. 截取字符串方法
1) 从下标位置开始进行截取,包括下标位置,后面内容都要
NSString *str = @”加油么么哒”;
NSString *newStr = [str substringFromIndex:4];
NSLog(@”%@”,newStr);
2) 从头开始进行截取,不包含下标位置
NSString *newStr2 = [str substringToIndex:4];
NSLog(@”%@”,newStr2);
3) 从某个下标位置开始进去字符串,截取2个
NSRange range = {0,2};
NSString *newStr3 = [str substringWithRange:range];
NSLog(@”%@”,newStr3);
4) NSRange是一个结构体,里面包含两部分,一个是location,就是范围的起始位置,另一个是length,截取字符串的长度
newStr3 = [str substringWithRange:NSMakeRange(4, 3)];
NSLog(@”%@”,newStr3);
4. 字符串拼接
1) 万能拼接法,能把任意类型转换成字符串
NSString *str = @”加油么么哒”;
NSString *newStr = [NSString stringWithFormat:@”%@%@%@”,str,22,@”你好”]; // 格式化拼接
NSLog(@”%@”,newStr);
2) 在原有字符串基础上拼接
NSString *str = @”加油么么哒”;
NSString *newStr = [str stringByAppendingFormat:@”你好”];
NSLog(@”%@”,newStr);
5.判断字符串内容是否相等
// isEqualToString比较的是两个字符串的内容
// str == str1 比较的是字符串的地址
NSString *str = @”张三”;
NSString *str1 = @”李四”;
BOOL result = [str isEqualToString: str1];
NSLog(@”%d”,result);
6. 替换
NSString *str = @”床前明月明”;
NSString *newStr = [str stringByReplacingOccurrencesOfString:@”明” withString:@”你”];
NSLog(@”%@”,newStr);

输出结果: 床前你月你

  1. 字符串的比较
    NSString *str1 = @”李四”;
    NSString *str2 = @”张三”;
    NSComparisonResult result = [str compare : str2];
    NSLog(@”%ld”, result);

    8 . 字符串前缀
    NSString *str = @”NSString”;
    BOOL result = [str hasPrefix:@”NS”];
    NSLog(@”%d”,result);

  2. 字符串后缀
    BOOL result1 = [str hanSuffix:@”ins”];
    NSLog(@”%d”,result1);

10 . 字符串大写
NSString *str = @”abcd”;
NSLog(@”%@”,str.uppercaseString);

11 . 字符串小写
NSString *str = @”JIGHA”;
NSLog(@”%@”,str.lowercaseString);

12 . 字符串首字母大写
NSString *str = @”abc”;
NSLog(@”%@”,str.capitalizedString);

13 . 把字符串转换成其他类型的值
NSString *str = @”1aaa2”;
NSInteger a = str.integerValue;
NSLog(@”%ld”,a);

  1. str1 是否包含 str2
    NSString *str1 = @”jkw2”;
    NSString *str2 = @”2”;
    BOOL result = [str1 containsString : str2];
    NSLog(@”%d”,result);

二: 可变字符串 :NSMutableString是NSString的子类,拥有父类所有的特征和行为.
// 操作一个可变的字符串,不会产生新的字符串,只在自身改变
// 字面量创建的字符串都是不可变的,因此可变字符串的创建采用常规方式
// 空字符串
NSMutableString *str = [NSMutableString string];
// 有初值
NSMutableString *str1 = [NSMutableString stringWithString:@”你好”];
1 . 插入字符串
NSMutableString *str = [NSMutableString stringWithString:@”151135”];
// 在任意位置上添加字符串DLS
[str insertString:@”DLS” atIndex:0];
NSLog(@”%@”,str);
2. 在字符串的后面拼接新的字符串(str 用的还是1里的)
[str appendString:@”-39”];
NSLog(@”%@”,str);
3.删除某范围内的字符串
[str deleteCharacterInRange:NSMakeRange(0,3)];
NSLog(@”%@”,str);
4. 替换
[str replaceCharacterInRange:NSMakeRange(0,1) withString:@”a”];
NSLog(@”%@”,str);

注意: 分辨可变和不可变字符串的方法:看返回值,比如替换等方法等,返回值类型是NSString * 是不可变字符串的方法,返回值是void是可变字符串的方法,可变字符串在操作时直接修改自身字符串内容.

三: 练习
// 练习一
NSString *date1 = @”2015 7 20”;
NSString *date2 = @”2015 7 30”;
// 拼接成 2015 7 20-30
NSString *newDate1 = [date1 subStringWithRange:NSMakeRange(5,11)];
NSString *newDate2 = [date2 subStringWithRange:NSMakeRange(5,11)];
NSString *newStr = [NSString stringWithFormat:@”%@ – %@”,newDate1,newDate2];
NSLog(@”%@”,newStr);

// 练习二:给出两个年月日的字符串,如果年份相同,输出:年-月-日 — 月-日
NSString *date1 = @”2015-10-20”;
NSString *date2 = @”2015-11-30”;
NSString *newDate1 = [date1 substringWithRange:NSMakeRange(0,4)];
NSStrint *newDate2 = [date2 substringWithRange:NSMakeRange(0,4)];
BOOL result = [newDate1 isEqualToString:newDate2];
if( result == 1){
date2 = [date2 substringFromIndex:5];
newDate1 = [NSString stringWithFormat:@”%@ – %@”,date1,date2];
}else{
newDate1 = [NSString stringWithFormat: @”%@ – %@”,date1,date2];
}
NSLog(@”%@”,newDate1);

// 练习三:(使用不可变字符串)
// 给定一个图片文件名,判断字符串中是否以png结尾,如果是,替换成jpg,如果不是,就拼接png
NSString *str = @”tupian.png”;
// 先计算长度
NSInteger length = str.length;
NSString *newStr = @”“;
NSString *str1 = [str substringFromIndex:str.length-3];
// 判断
BOOL result = [str1 isEqualToString:@”png”];
if(result == 1){
newStr = [str stringByReplacingOccurrenceOfString:@”png” withString:@”jpg”];
}else{
newStr = [str stringByAppendingString:@”.png”];
}
NSLog(@”%@”,newStr);

// 练习四 : 使用可变字符串做练习三
NSMutableString *str = [NSMutableString stringWithString:@”tupian”];
NSInteger length = str.length;
NSString *str1 = [str substringFromIndex:length-3];
BOOL result = [str1 isEqualToString:@”png”];
if( result == 1){
[str replaceCharactersInRange:NSMakeRange((length-3) , 3) withString:@”jpg”];
}else{
[str appendString:@”.png”];
}
NSLog(@”%@”, str);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值