OC语言 - 字符串
■ 字符串
OC 中核心的处理字符串的类就是 NSString 和 NSMutableString 这两个类,它们完成了 OC 中字符串大部分功能的处理
代码示例:如何使用
1. NSString
1 // --------------创建字符串-------------- 2 // 常量区 3 NSString *str01 = @"小白菜"; 4 NSLog(@"%p",str01);// 0x100001090 5 6 // 堆区 7 int num = 21; 8 // 因 Tagged Pointer 的缘故 9 // 内存占用过大则在堆区;过小则在常量区 10 NSString *str = [[NSString alloc] initWithFormat:@"%d",num]; 11 NSLog(@"%p",str);// 0xe2cb70e06160bdcd 12 13 // 堆区 14 NSInteger classNumber = 21; 15 NSInteger studentCount = 55; 16 CGFloat score = 98.7; 17 NSString *str03 = [NSString stringWithFormat:@"%ld班,总人数:%ld人,其平均成绩:%.1f分",classNumber,studentCount,score]; 18 NSLog(@"%@,%p",str03,str03);// 21班,总人数:55人,其平均成绩:98.7分,0x102a042c0 19 20 21 //----------------------------------- 22 // 长度 23 NSString *str04 = @"Ha\0ze\0"; 24 NSUInteger lenStr01 = [str04 length]; 25 NSLog(@"len = %lu",lenStr01);// 6 26 NSString *str05 = @"小白\0\0"; 27 NSUInteger lenStr02 = [str05 length]; 28 NSLog(@"len = %lu",lenStr02);// 4 29 30 // 拼接,返回新字符串 31 NSString *str06 = @"iOS"; 32 NSString *str07 = @"app"; 33 NSString *newStr01 = [str06 stringByAppendingString:str07]; 34 NSLog(@"%@",newStr01);// iOSapp 35 NSLog(@"%@",str06);// iOS 36 NSLog(@"%@",str07);// app 37 38 int n01 = 21; 39 NSString *str08 = [newStr01 stringByAppendingFormat:@"%d班",n01]; 40 NSLog(@"%@",str08);// iOSapp21班 41 NSLog(@"%@",newStr01);// iOSapp 42 43 // 截取:返回新字符串 44 // substringFromIndex: 45 NSString *str09 = @"qiaobangzhu"; 46 NSString *newStr02 = [str09 substringFromIndex:4]; 47 NSLog(@"%@ %@",newStr02,str09);// bangzhu qiaobangzhu 48 NSString *str10 = @"黑科技"; 49 NSString *newStr03 = [str10 substringFromIndex:1]; 50 NSLog(@"%@ %@",newStr03,str10);// 科技 黑科技 51 52 // substringToIndex 53 NSString *str11 = @"jiguangkeji"; 54 NSString *newStr04 = [str11 substringToIndex:5]; 55 NSLog(@"%@",newStr04);// jigua 56 NSString *str12 = @"激光科技,梦想追逐的起点"; 57 NSString *newStr05 = [str12 substringToIndex:5]; 58 NSLog(@"%@",newStr05);// 激光科技, 59 60 // 拆分:返回的是一个数组 61 NSString *str13 = @"www.baidu.com"; 62 NSArray *arr01 = [str13 componentsSeparatedByString:@"ai"]; 63 NSLog(@"%@",arr01);// ("www.b","du.com") 64 65 // 子串在原串中第一次出现的范围:下标/长度 66 NSString *str14 = @"jiguangkeji"; 67 NSRange range01 = [str14 rangeOfString:@"ua"]; 68 NSLog(@"location:%lu,length:%lu",range01.location,range01.length);// location:3,length:2 69 70 // 求某一范围的子串 71 NSString *str25 = @"jiguangkeji"; NSRange ran04 = NSMakeRange(3, 4); 72 NSString *newStr11 = [str25 substringWithRange:ran04]; 73 NSLog(@"%@",newStr11);// uang 74 75 // 替换:把原字符串中所有出现子串 小 替换成新的子串 大 76 NSString *str18 = @"你是我的小呀小苹果"; 77 NSString *newStr19 = [str18 stringByReplacingOccurrencesOfString:@"小" withString:@"大"]; 78 NSLog(@"%@",str18); // 你是我的小呀小苹果 79 NSLog(@"%@",newStr19);// 你是我的大呀大苹果 80 81 // 判断字符串是否以某个子串开头/结尾 82 NSString *str15 = @"http://www.baidu.com"; 83 // 是否开头 84 BOOL res01 = [str15 hasPrefix:@"http"]; 85 NSLog(@"%@",res01 ? @"YES" : @"NO");// YES 86 // 是否结尾 87 BOOL res02 = [str15 hasSuffix:@".com"]; 88 NSLog(@"%@",res02 ? @"YES": @"NO");// YES 89 90 // 判断两个字符串是否相等 91 NSString *str17 = @"jiguangkeji"; 92 NSString *str19 = @"jiguangkuji"; 93 if ([str17 isEqualToString:str19]) { 94 NSLog(@"yes"); 95 }else{ 96 NSLog(@"no"); 97 } 98 99 // 比较:结果 1 代表前者大于后者;结果 0 代表两者相等;结果 -1 代表前者小于后者 100 NSString *str20 = @"ldn"; 101 NSString *str21 = @"len"; 102 NSComparisonResult res03 = [str20 compare:str21]; 103 NSLog(@"result = %ld",res03);// -1 104 105 // 大小写转换 106 NSString *str22 = @"hjhJDSJjkkjjjGGHKG"; 107 // 转小写 108 NSString *newStr09 = [str22 lowercaseString]; 109 // 转大写 110 NSString *newStr08 = [str22 uppercaseString]; 111 112 // 首字母改成大写 113 NSString *str24 = @"i am a stuDent"; 114 NSString *newStr07 = [str24 capitalizedString]; 115 NSLog(@"%@",newStr07); 116 117 // 字符串类型转基本类型 118 NSString *num01 = @"56"; 119 NSString *num02 = @"23.5"; 120 CGFloat res05 = [num01 integerValue] + [num02 floatValue]; 121 NSLog(@"%.1f",res05);// 79.5 122 123 124 //--------------- 5种创建字符串的方式-------------------- 125 NSString *no1 = @"方式 1"; 126 NSString *no2 = [[NSString alloc] initWithString:@"方式 2"]; 127 NSString *no3 = [[NSString alloc] initWithFormat:@"方式 %d",3]; 128 NSString *no6 = [NSString stringWithFormat:@"方式 %d",5]; 129 // C 语言字符串转换成 OC 字符串 130 NSString *no4 = [[NSString alloc] initWithUTF8String:"方式4"]; 131 // OC 字符串转换成 C 字符串 132 const char *no5 = [@"小白菜" UTF8String];
2. NSMutableString
1 NSMutableString *string01 = [NSMutableString stringWithFormat:@"柯基臀"]; 2 [string01 appendString:@"蜂腰"]; 3 4 // 删除 5 [string01 deleteCharactersInRange:NSMakeRange(1, 2)]; 6 NSLog(@"%@",string01);// 柯蜂腰 7 8 // 在字符串的某个位置,插入某个字串 9 [string01 insertString:@"Y" atIndex:2]; 10 NSLog(@"%@",string01);// 柯蜂Y腰 11 [string01 insertString:@"火辣" atIndex:0]; 12 NSLog(@"%@",string01);// 火辣柯蜂Y腰 13 14 // 替换 15 NSRange ran11 = NSMakeRange(0, 2); 16 [string01 replaceCharactersInRange:ran11 withString:@"性感"]; 17 NSLog(@"%@",string01);// 性感柯蜂Y腰 18 // 内容重置 19 [string01 setString:@"小蛮腰大粗腿"]; 20 NSLog(@"%@",string01);// 小蛮腰大粗腿 21 22 // 删除:在实际开发中,通常把这两个方法一起使用 23 NSMutableString *s1 = [NSMutableString stringWithFormat:@"hellow,pretty girl,"]; 24 [s1 appendString:@"my climb will be steep!"]; 25 26 // 删除 hellow, 27 NSRange range = [s1 rangeOfString:@"hellow,"]; 28 [s1 deleteCharactersInRange:range]; 29 NSLog(@"%@",s1);// pretty girl,my climb will be steep!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律