字符串的创建和使用。
所有的笔记都记录在代码的注释部分,每一句代码都至少有一句注释。通俗易懂。
笔记包含以下内容:
创建字符串,通过格式符创建字符串,通过C字符串创建OC字符串。
两种方法比较字符串大小,从一个字符串中查找另一个字符串,从一个字符串中提取指定指定位置字符串。
可变字符串的增删改。
代码部分如下:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString * str = @"hello world!\n";
NSString * str2 = [[NSString alloc] initWithString:str];
// 通过其他字符串赋值给创建的变量
NSString * str3 = [[NSString alloc] initWithUTF8String:"hello world!"];
// 用C的字符串来创建一个OC的字符串
NSString * str4 = [[NSString alloc] initWithFormat:@"hello %d %c", 5, 'A'];
// 使用格式符拼接成一个字符串
NSString * str5 = [NSString stringWithUTF8String:"hello world!"];
// 将C的字符串转换成OC的字符串的对象
NSString * str6 = [NSString stringWithFormat:@"%d %@ %c", 1, @"hello", 'R'];
// 用格式符创建临时字符串
NSString * str7 = [NSString stringWithString:str];
// 使用字符串临时创建字符串。
// 临时字符串自动释放对象
// 无论是哪一种方法创建的字符串,都是不可变的。
NSLog(@"%@", str);
NSLog(@"%@", str2);
NSLog(@"%@", str3);
NSLog(@"%@", str4);
NSLog(@"%@", str5);
NSLog(@"%@", str6);
NSLog(@"%@", str7);
// 比较两个字符串的大小
NSString * str11 = @"hello world!";
NSString * str12 = @"hello word!";
// 可以使用自带的方法 结果返回两个字符串是否相等
BOOL ret1 = [str11 isEqualToString:str12];
NSLog(@"%d", ret1);
NSString * str13 = @"123";
NSString * str14 = @"456";
// compare结果是一个枚举,根据比较大小有3个返回值,分别是-1, 0, 1。
NSComparisonResult ret2 = [str13 compare:str14];
if (ret2 == NSOrderedAscending) {
NSLog(@"str13 < str14");
} else if (ret2 == NSOrderedSame) {
NSLog(@"str13 = str14");
} else if (ret2 == NSOrderedDescending) {
NSLog(@"str13 > str14");
}
// 从一个字符串中查找他的字串
NSString * str15 = @"I am a so bad man.";
NSString * subStr = @"so";
// 是个结构体,由两个长整形构成,一个是location位置,一个是length长度
NSRange range1 = [str15 rangeOfString:subStr];
NSLog(@"location:%lu lenth:%lu", range1.location, range1.length);
// 从一个字符串中提取。从一个父字符串中找出一部分生成
NSString * str16 = @"0123456789";
// 表示从str16中提取从头至6个字符串生成新字符串,返回字符串地址。(0--5不包括第6个字符)
NSString * str17 = [str16 substringToIndex:6];
NSLog(@"str16:%@", str16);
NSLog(@"str17:%@", str17);
// 从str16中提取第6个字符(包括第6个字符)到最后一个字符生成新字符串,返回字符串地址。
NSString * str18 = [str16 substringFromIndex:6];
NSLog(@"str18:%@", str18);
// 从指定位置提取制定字符长度
NSRange rang2 = {3, 4}; // 从第3个字符开始提取4个字符。(从0开始数)
NSString * str19 = [str16 substringWithRange:rang2];
NSLog(@"str19:%@", str19);
// 可以通过NSMakeRange创建rang值,这是一个C的函数
NSString * str20 = [str16 substringWithRange:NSMakeRange(3, 4)];
NSLog(@"str20:%@", str20);
// 可变字符串NSMutableString,继承自字符串
// 字符串能用的函数,可变字符串也都可以使用
// 可变字符串还增加了增删改查四个方法
NSMutableString * strWrongWay = @"hello";
// 上面的声明是不可行的。因为@"hello"是一个不可变的字符串,而str21是一个可变字符串类型的指针。
NSMutableString * str21 = [[NSMutableString alloc] init];
// 可以先创建一个空的可变字符串,然后set内容。
[str21 setString:@"hello"];
NSLog(@"str21:%@", str21);
// 增
// 追加 append
[str21 appendString:@"123"];
NSLog(@"append str21:%@", str21);
// 追加格式符
[str21 appendFormat:@"%c", 'D'];
NSLog(@"appendFormat str21:%@", str21);
// 插入 insert
// 两个参数,分别是插入的字符串以及插入的位置
[str21 insertString:@"XXXX" atIndex:4];
NSLog(@"insert str21:%@", str21);
// insert没有自带的format,可以通过创建format数组的形式。
[str21 insertString:[NSString stringWithFormat:@"%d", -54] atIndex:7];
NSLog(@"insertFormat str21:%@", str21);
// 删 delete
// 两个参数,分别是删除的起始位置和要删除的字符数
[str21 deleteCharactersInRange:NSMakeRange(3, 5)];
NSLog(@"delete str21:%@", str21);
// 改 replace
// 修改、替换一部分字符
// 两个参数,分别是要替换的rang(替换字符的起始位置,替换字符的长度)和要替换的字符
[str21 replaceCharactersInRange:NSMakeRange(3, 2) withString:@"RRRRRRR"];
NSLog(@"replace str21:%@", str21);
}
return 0;
}
执行结果如下:
2015-06-02 14:40:45.961 NSString[16550:4900038] hello world!
2015-06-02 14:40:45.962 NSString[16550:4900038] hello world!
2015-06-02 14:40:45.963 NSString[16550:4900038] hello world!
2015-06-02 14:40:45.963 NSString[16550:4900038] hello 5 A
2015-06-02 14:40:45.963 NSString[16550:4900038] hello world!
2015-06-02 14:40:45.963 NSString[16550:4900038] 1 hello R
2015-06-02 14:40:45.963 NSString[16550:4900038] hello world!
2015-06-02 14:40:45.963 NSString[16550:4900038] 0
2015-06-02 14:40:45.964 NSString[16550:4900038] str13 < str14
2015-06-02 14:40:45.964 NSString[16550:4900038] location:7 lenth:2
2015-06-02 14:40:45.964 NSString[16550:4900038] str16:0123456789
2015-06-02 14:40:45.964 NSString[16550:4900038] str17:012345
2015-06-02 14:40:45.964 NSString[16550:4900038] str18:6789
2015-06-02 14:40:45.964 NSString[16550:4900038] str19:3456
2015-06-02 14:40:45.965 NSString[16550:4900038] str20:3456
2015-06-02 14:40:45.965 NSString[16550:4900038] str21:hello
2015-06-02 14:40:45.965 NSString[16550:4900038] append str21:hello123
2015-06-02 14:40:45.965 NSString[16550:4900038] appendFormat str21:hello123D
2015-06-02 14:40:45.965 NSString[16550:4900038] insert str21:hellXXXXo123D
2015-06-02 14:40:45.965 NSString[16550:4900038] insertFormat str21:hellXXX-54Xo123D
2015-06-02 14:40:45.965 NSString[16550:4900038] delete str21:hel54Xo123D
2015-06-02 14:40:45.966 NSString[16550:4900038] replace str21:helRRRRRRRXo123D