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