OC笔记,字符串NSString

字符串的创建和使用。

所有的笔记都记录在代码的注释部分,每一句代码都至少有一句注释。通俗易懂。

笔记包含以下内容:

创建字符串,通过格式符创建字符串,通过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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值