OC--字符串

本文详细介绍了Objective-C与Swift中的字符串操作方法,包括不可变字符串和可变字符串的区别、字符串拼接、子串操作、字符串比较、大小写转换及字符串类型转换等内容,旨在帮助开发者熟练掌握字符串处理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#warning NSString

        

#pragma mark - 使用苹果帮助文档

        

        //苹果每次IOS版本的升级,都会添加或更新大量API,并提供相应的参考文档,开发者很难记忆所有API,因此学会使用苹果帮助文档使开发者的一项技能

        

        //打开文档的方法

        //Xcode -> Help -> Documentation and API Reference

        

        //文档内包含的基本信息

        //Inheerits from 继承自

        //Conforms to 遵循什么协议

        //Framework 属于哪个框架

        //AVailability 什么时候可用

        //Declared in 声明在什么头文件里

        //Related documents 相关文档

        //Sample code 示例代码

        

        //快速打开帮助文档

        //在代码中,将鼠标停留在类名或者方法名上, option + 鼠标左键,点击Reference的超链接进入帮助文档;也可以使用command + 鼠标左键,进入头文件,查看类的接口部分

        

#pragma mark - Foundation框架

        

        //Foundation框架是Cocoa编程,IOS编程的基础框架,包括:字符串,集合,日期,时间等基础类

        

#pragma mark - 字符串 NSString

        

        //C语言中,字符串是由char (ASCII码)字符组成

        //OC中,字符串是由unichar (Unicode)字符组成

        //OC中,字符串分为可变字符串和不可变字符串

        //NSString,不可变字符串,即:创建以后,内容和长度不能改变

        //NSMutableString,可变字符串,即:创建以后,内容还可以修改

        

#pragma mark - 不可变字符串

        

        NSString *str = @"DuNiang";

        NSInteger a = 250;

        //参照printf/NSLog

        //常用的高大上的方法, 场景:将其他的格式的变量转换为字符串

        NSString *str1 = [NSString stringWithFormat:@"%@%ld", str, a];

        NSLog(@"str1 = %@", str1);

        //求字符串的长度

        NSLog(@"str1.length = %ld", str1.length);

        

#pragma mark - 子串  sub

        

        //从哪

        NSString *str2 = [str1 substringFromIndex:2];

        NSLog(@"str2 = %@", str2);

        //到哪

        NSString *str3 = [str1 substringToIndex:5];

        NSLog(@"str3 = %@", str3);

        //指定范围

        //        NSRange range = NSMakeRange(2, 4);

        //        NSString *str4 = [str1 substringWithRange:range];

        NSString *str4 = [str1 substringWithRange:NSMakeRange(2, 5)];

        NSLog(@"str4 = %@", str4);

        

#pragma mark - 拼接 append

        

        NSString *str5 = [str1 stringByAppendingString:@"haha"];

        NSLog(@"str5 = %@", str5);

        

        NSString *str6 = [str1 stringByAppendingFormat:@"haha%d%@", 6666, @"lala"];

        NSLog(@"str6 = %@", str6);

        

#pragma mark - 替换 replace

        

        //从下标为x开始长度为y的字符串开始替换,替换的的 字符串的长度可以不与被替换的字符串相等

        

        NSString *str7 = [str1 stringByReplacingCharactersInRange:NSMakeRange(2, 5) withString:@"XiaoJie"];

        NSLog(@"str7 = %@", str7);

        

        //指定一个子串进行替换

        

        NSString *str8 = [str1 stringByReplacingOccurrencesOfString:@"Niang" withString:@"Teng"];

        NSLog(@"str8 = %@", str8);

        

#pragma mark - 比较 compare

        

        //判断相等 ---用布尔类型 相等输出1,不相等则输出0

        

        BOOL ret = [str1 isEqualToString:@"DuNiang250"];

        NSLog(@"ret = %d", ret);

        

        BOOL ret0 = [str1 isEqualToString:@"xxxxx"];

        NSLog(@"ret0 = %d", ret0);

        

        //比较大小, 大则输出1, 相等输出0, 小则输出 -1;

        

        NSInteger ret1 = [str1 compare:@"DuLiang"];

        NSLog(@"ret1 = %ld", ret1);

        

        NSInteger ret2 = [str1 compare:@"DuNiang250"];

        NSLog(@"ret2 = %ld", ret2);

        

        NSInteger ret3 = [str1 compare:@"xxx"];

        NSLog(@"ret3 = %ld", ret3);

        

        //NSOrderedDesceding 相当于 1,NSOrderedSame 相当于 0, NSOrderedAscending 相当于 -1;

        

        if (NSOrderedDescending == [str1 compare:@"xxx"]) {

            NSLog(@"66666");

        } else {

            NSLog(@"2222222");

        }

        

        //比较开头

        

        BOOL ret4 = [str1 hasPrefix:@"xxx"];

        NSLog(@"ret4 = %d", ret4);

        

        //比较结尾

        

        BOOL ret5 = [str1 hasSuffix:@"DuNiang250"];

        NSLog(@"ret5 = %d", ret5);

        

#pragma mark - 杂货铺

        

        //字符串类型转换为其他类型

        //NSUInteger 无符号的,既没有负数,NSInteger是有符号的

        //int:当使用int类型定义变量的时候,可以像写C程序一样,用int也可以用NSInteger,推荐使用NSInteger ,因为这样就不用考虑设备是32位还是64位了。

        

        NSString *str9 = @"6666";

        NSInteger ret6 = [str9 integerValue];

        NSLog(@"ret6 = %ld", ret6);

        

        //大小写转换

        //1.转小写

        

        NSString *str10 = [str1 lowercaseString];

        NSLog(@"str10 = %@", str10);

        

        //2.转大写

        

        NSString *str11 = [str1 uppercaseString];

        NSLog(@"str11 = %@", str11);

        

        //3.首字母转大写

        

        NSString *str12 = [str10 capitalizedString];

        NSLog(@"str12 = %@", str12);

        

#pragma mark - 可变字符串

        

        //NSMutableString是NSString的子类

        

        NSMutableString *strM = [NSMutableString stringWithFormat:@"DuNiang"];

        

        //插入

        //[strM insertString:@"要插入的字符串" atIndex:要插入的位置];

        

        [strM insertString:@"Love" atIndex:2];

        NSLog(@"strM = %@", strM);

        

        //删除

        //delete 和 remove的区别

        //delete是删除,东西不在任何一个区

        //remove是移除,你可以将东西从A区移动到B区,但东西仍还在

        //NSRange range1 = {下标,删除的字符串的长度};

        

        [strM deleteCharactersInRange:NSMakeRange(6, 0)];

        NSLog(@"strM = %@", strM);

        

#pragma mark - 可变不可变注意事项

        

        //1.不可变字符串的修改操作,本质就是得到一个新的字符串

        //2.不可变字符串的修改方法以string开头,有返回值

        //3.可变字符串的修改方法没有返回值,修改原字符串



内容概要:本文介绍了多种开发者工具及其对开发效率的提升作用。首先,介绍了两款集成开发环境(IDE):IntelliJ IDEA 以其智能代码补全、强大的调试工具和项目管理功能适用于Java开发者;VS Code 则凭借轻量级和多种编程语言的插件支持成为前端开发者的常用工具。其次,提到了基于 GPT-4 的智能代码生成工具 Cursor,它通过对话式编程显著提高了开发效率。接着,阐述了版本控制系统 Git 的重要性,包括记录代码修改、分支管理和协作功能。然后,介绍了 Postman 作为 API 全生命周期管理工具,可创建、测试和文档化 API,缩短前后端联调时间。再者,提到 SonarQube 这款代码质量管理工具,能自动扫描代码并检测潜在的质量问题。还介绍了 Docker 容器化工具,通过定义应用的运行环境和依赖,确保环境一致性。最后,提及了线上诊断工具 Arthas 和性能调优工具 JProfiler,分别用于生产环境排障和性能优化。 适合人群:所有希望提高开发效率的程序员,尤其是有一定开发经验的软件工程师和技术团队。 使用场景及目标:①选择合适的 IDE 提升编码速度和代码质量;②利用 AI 编程助手加快开发进程;③通过 Git 实现高效的版本控制和团队协作;④使用 Postman 管理 API 的全生命周期;⑤借助 SonarQube 提高代码质量;⑥采用 Docker 实现环境一致性;⑦运用 Arthas 和 JProfiler 进行线上诊断和性能调优。 阅读建议:根据个人或团队的需求选择适合的工具,深入理解每种工具的功能特点,并在实际开发中不断实践和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值