字符串:NSString(不可变字符串) 和 NSMutableString(可变字符串)

1. NSString(不可变字符串)

1.1 创建字符串对象, 只使用初始化方法和便利构造器

初始化方法

NSString *name = [[NSString alloc] initWithString:@"1234567890"];

便利构造器

NSString *name2 = [NSString stringWithString:@"1234567890"];

常见字符串创建

NSString *name3 = @"1234567890";

1.2 获取字符串长度

NSLog(@"length = %lu", [name3 length]);
NSLog(@"length = %lu", name3.length);

打印结果:

length = 10

length = 10

1.3 获取子字符串

NSString *str1 = [name3 substringFromIndex:3];
NSLog(@"str1 = %@", str1);

从下标为3的字符开始(包含)

打印结果:

str1 = 4567890

NSString *str2 = [name3 substringToIndex:3];
NSLog(@"str2 = %@", str2);

到下标为3的字符(不包含)

打印结果:

str2 = 123

NSRange range = NSMakeRange(3, 2);
NSString *str3 = [name3 substringWithRange:range];
NSLog(@"str3 = %@", str3);

范围(从到下标为3的字符(包含)开始获取2个字符)

打印结果:

str3 = 45

1.4 拼接字符串

NSString *pro = @"辽宁省";
NSString *city = @"大连市";
NSString *local = [pro stringByAppendingString:city];
NSLog(@"local = %@", local);
NSString *area = @"沙河口区";
NSString *local1 = [local stringByAppendingString:area];
NSLog(@"local1 = %@", local1);
// 3个字符串连拼
NSString *local2 = [[pro stringByAppendingString:city] stringByAppendingString:area];
NSLog(@"local2 = %@", local2);

打印结果:

local = 辽宁省大连市

local1 = 辽宁省大连市沙河口区

local2 = 辽宁省大连市沙河口区

1.5 替换字符串

NSString *word = @"helle";
NSString *newWord = [word stringByReplacingOccurrencesOfString:@"e" withString:@"o"];
NSLog(@"newWord = %@", newWord);

所有的 e 都被 o 替换

打印结果:

newWord = hollo

NSRange range1 = NSMakeRange(4, 1);
NSString *newWord1 = [word stringByReplacingCharactersInRange:range1 withString:@"o"];
NSLog(@"newWord1 = %@", newWord1);
// 连写
NSString *newWord2 = [word stringByReplacingCharactersInRange:NSMakeRange(4, 1) withString:@"o"];
NSLog(@"newWord2 = %@", newWord2);

限定范围的字符串替换

打印结果:

newWord1 = hello

newWord2 = hello

1.6 字符串相等

NSString *userName = @"Leo";
if ([userName isEqualToString:@"Leo"]) {
   NSLog(@"登陆");
} else {
   NSLog(@"用户不存在");
}

返回BOOL值,是真返回YES(1),是假返回NO(0)

打印结果:

登陆

1.7 字符串比较

NSString *str5 = @"abc";
NSString *str6 = @"abd";
NSLog(@"compare: %ld", [str5 compare:str6]);

返回结果:NSOrderedAscending= -1, NSOrderedSame = 0, NSOrderedDescending = 1

打印结果:

compare: -1

1.8 判断字符串是什么开头或者结尾

NSString *pic1 = @"1.png";
if ([pic1 hasSuffix:@"png"]) {
            
    pic1 = [pic1 stringByReplacingOccurrencesOfString:@"png" withString:@"jpg"];
} else {
            
    pic1 = [pic1 stringByAppendingString:@".jpg"];
}
        NSLog(@"%@", pic1);

给定一个图片文件名, 判断字符串中是否以"png"结尾, 如果是就替换成"jpg", 如果不是, 就拼接".jpg”

开头 - (BOOL)hasPrefix:(NSString *)aString;

结尾 - (BOOL)hasSuffix:(NSString*)aString;

打印结果:

pic1 = 1.jpg

1.9 大小写字符串转换

NSString *str7 = @"I am a student";
NSString *str8 = [str7 uppercaseString];
NSLog(@"str8 = %@", str8);

字符串全部改为大写字母

打印结果:

str8 = I AM A STUDENT

NSString *str9 = [str7 lowercaseString];
NSLog(@"str9 = %@", str9);

字符串全部改为大写字母

打印结果:

str9 = i am a student

NSString *str10 = [str7 capitalizedString];
NSLog(@"str10 = %@", str10);

字符串每个首字母是大写

打印结果:

str10 = I Am A Student

1.10 数值和字符串相互转换

NSString *str11 = @"3.1415926";
double pi = [str11 doubleValue];
NSLog(@"pi = %.7f", pi);

字符串转数值

打印结果:

pi = 3.1415926

int a = 12345;
NS_FORMAT_FUNCTION(1,2);
NSString *str12 = [NSString stringWithFormat:@"%d", a];
NSLog(@"str12 = %@", str12);

数值转字符串

打印结果:

str12 = 12345

NSString *str13 = [NSString stringWithFormat:@"%d", a];
NSLog(@"str13 = %@", str13);
NSString *str14 = [NSString stringWithFormat:@"生成新的字符串: %@", str1];
NSLog(@"str14 = %@", str14);

Format 格式化

打印结果

str13 = 12345

str14 = 生成新的字符串: 4567890

1.11 将字符串分割为数组

<pre name="code" class="objc">NSString *s = @"abc|hello|ok";
NSArray *my = [s componentsSeparatedByString:@"|"];
 

打印结果:

(

    abc,

    hello,

    ok,

)

2. NSMutableString(可变字符串)

2.1 创建可见字符串

NSMutableString *mStr = [NSMutableString stringWithString:@"可变字符串"];

2.2 拼接字符串

[mStr appendString:@"可变长"];
NSLog(@"mStr = %@", mStr);
打印结果:

mStr = 可变字符串可变长

2.3 插入字符串

[mStr insertString:@"任意" atIndex:6];
NSLog(@"mStr = %@", mStr);
打印结果:

mStr = 可变字符串可任意变长

2.4 删除字符串

NSRange range5 = NSMakeRange(6, 2);
[mStr deleteCharactersInRange:range5];
NSLog(@"mStr = %@", mStr);
打印结果:

mStr =可变字符串可变长


练习:

1. 给定一个图片文件名, 判断字符串中是否以"png"结尾, 如果是就替换成"jpg", 如果不是, 就拼接".jpg"

NSString *pic = @"1.png";
NSString *subPic = [pic substringFromIndex:2];
if ([subPic isEqualToString:@"png"]) {
            
   pic = [pic stringByReplacingOccurrencesOfString:@"png" withString:@"jpg"];
} else {
            
   pic = [pic stringByAppendingString:@".jpg"];
}
NSLog(@"%@", pic);
打印结果:

pic = 1.jpg

2. 用NSMutableString完成下述功能:给定一个图片文件名, 判断字符串中是否以 "png"结尾, 如果是就替换成"jpg", 如果不是, 就拼接".jpg"

NSMutableString *mPic = [NSMutableString stringWithString:@"2.png"];
if ([mPic hasSuffix:@"png"]) {
   [mPic deleteCharactersInRange:NSMakeRange(2, 3)];
   [mPic appendString:@"jpg"];
   NSLog(@"mPic = %@", mPic);
} else {
  [mPic appendString:@".jpg"];
   NSLog(@"mPic = %@", mPic);
}
打印结果:

mPic = 2.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值