Objective-C---3---NSString的常用方法
发布日期:2022-02-08 18:03:21
浏览次数:25
分类:技术文章
本文共 7626 字,大约阅读时间需要 25 分钟。
1. NSString:
OC有自己的字符串类,
常规类的创建:NSString *str = [[NSString alloc] init];
1.1 创建的方法:
//字符串创建一: NSString *p = @"葵花宝典"; NSLog(@"%@", p); //字符串创建二: NSString *str = [[NSString alloc] initWithString:p]; NSLog(@"%@", str); //字符串创建三: NSString *str1 = [[NSString alloc] initWithUTF8String:"切记:这个是C的字符串,所以不用加@"]; // 不用加@,因为这写的是 const char* NSLog(@"%@", str1); //字符串创建四: NSString *str2 = [[NSString alloc] initWithFormat:@"最常用的字符串%c", '0']; NSLog(@"%@",str2); [str1 release]; // 用一个alloc,就用一个release释放 [str release]; [str2 release];1.2 创建临时字符串:
临时字符串的创建没有使用alloc,所以不需要我们手动释放内存,它会自动释放
// 创建临时字符串1 NSString *str = @"OC-Hello world"; // 创建临时字符串2 NSString *str1 = [NSString stringWithUTF8String:"C语言"]; NSLog(@"%@", str1); // 创建临时字符串3 NSString *str2 = [NSString stringWithFormat:@"便利构造器的%@ %c", @"方法", 'a']; NSLog(@"%@", str2); // 创建临时字符串4 NSString *str3 = [NSString stringWithString:str2]; NSLog(@"%@", str3);
1.3 initWithFormat和stringWithFormat:
这两个方法中的第一个参数中的%@,%d,%c....会用你后面写的相对应的类型的东西替换
1.4 字符串比较大小:
// 比较字符串是否相等- (BOOL)isEqualToString:(NSString *)aString;-------->比较是否相等 记得返回值是BOOL型// 比较字符串的大小- (NSComparisonResult)compare:(NSString *)string; // 返回值类型是NSComparisonResult 并不是BOOL型/* NSComparisonResult型是枚举类型typedef NS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};小于----- -1等于----- 0大于----- 1*/// 字符串比较NSString *str1 = @"hdudi";NSString *str2 = @"hdudi";if (str1 == str2) { NSLog(@"str1 = str2"); }else { NSLog(@"not same"); }// 结果是相等, 是因为这个比较的是字符串常量的地址, str1和str2指向的是同一个字符串,所以地址是一样的
#pragma mark---------1.字符串的方法 // 字符串比较 { NSString *str1 = @"hello"; NSString *str2 = @"helloworld"; BOOL result = [str1 isEqualToString:str2]; NSLog(@"%d", result); NSComparisonResult res = [str1 compare:str2]; if (res == NSOrderedAscending) { NSLog(@"str1 < str2"); } if (res == NSOrderedDescending) { NSLog(@"str1 > str2"); } if (res == NSOrderedSame) { NSLog(@"str1 = str2"); } }
1.5 字符串查找方法:
#pragma mark------------ 字符串查找 { NSString *str3 = @"Nevermid I will find someone like you"; NSString *subStr3 = @"someone"; NSRange range = [str3 rangeOfString:subStr3]; NSLog(@"location = %lu, length = %lu", range.location, range.length);// NSNotFound --------长整型的最大值 }
1.6 字符串提取方法:
#pragma mark---------------字符串提取:------三种 NSString *str4 = @"01234567890"; // 1. To是从头开始,截取n个长度的字符 NSString *subStr4 = [str4 substringToIndex:6]; NSLog(@"%@", subStr4); // 2. From是从n开始截取,一直到最后 NSString *subStr5 = [str4 substringFromIndex:5]; NSLog(@"%@", subStr5); // 3. Range是从第a个开始截取,截取b个长度的字符:a和b是NSMakeRange的两个长度 NSString *subStr6 = [str4 substringWithRange:NSMakeRange(4, 3)]; NSLog(@"%@", subStr6); NSString *str = @"http://www.lanou3g.com"; // 1.从xx位置开始到最后结束 NSString *sub1 = [str substringFromIndex:7]; NSLog(@"%@", sub1); // 2.从开始位置到xx结束 NSString *sub2 = [str substringToIndex:7]; NSLog(@"%@", sub2); // 3.获取一个范围 NSString *sub3 = [str substringWithRange:NSMakeRange(11, 7)]; NSLog(@"%@", sub3);
1.7 字符串长度及拼接:
#pragma mark------------字符串的长度 { NSString *str = [NSString stringWithFormat:@"you need cry dear!"]; NSLog(@"%lu", [str length]); } #pragma mark-------------字符串拼接 { NSString *str = [NSString stringWithFormat:@"you need cry dear!"]; NSLog(@"%@", [str stringByAppendingString:@"hahahah"]); }
1.8 字符串替换-----不可变字符串的替换:
#pragma mark-----------用一个字符串替换指定范围内的一堆字符 //将lanou3g用baidu替换 NSString *str = @"http://www.lanou3g.com"; NSString *s1 = [str stringByReplacingCharactersInRange:NSMakeRange(11, 7) withString:@"baidu"]; NSLog(@"%@", s1); #pragma mark-----------用字符串替换字符串 // 将空格去掉 NSString *str1 = @"sgsh jjj yy"; NSString *s = [str1 stringByReplacingOccurrencesOfString:@" " withString:@""]; NSLog(@"%@", s);
1.9 检测字符串前缀和后缀:
#pragma mark--------检测字符串前缀(hasPrefix)和后缀(hasSuffix) { // 判断前缀:网址是否合法:http:// https:// NSString *str1 = @"http://www.baidu.com"; if ([str1 hasPrefix:@"http://"] || [str1 hasPrefix:@"https://"]) { NSLog(@"合法"); }else NSLog(@"不合法"); // 判断后缀:例如图片后缀:jpg png gif jpeg NSString *imgName = @"balabala.jpg"; if ([imgName hasSuffix:@".jpg"] || [imgName hasSuffix:@".png"] || [imgName hasSuffix:@".gif"] || [imgName hasSuffix:@".jpeg"]) { NSLog(@"合法图片后缀"); }else NSLog(@"不合法"); // 练习:判断是否为word文件 NSString *wordName = @"OC.doc"; if ([wordName hasSuffix:@".doc"]) { NSLog(@"是文件"); }else NSLog(@"不是文件"); }1.10 可变字符串:
NSMutableString是NSString的子类,创建动态可变字符串, NSMutableString继承NSString的方法:
不可变字符串的方法以string开头,有返回值,
可变字符串的方法无返回值,对字符串本身进行修改
NSMutableString在使用时最好不要直接赋值(=@“”),因为这个NSMutableString是可变字符串,他的内容应该都是append进去的
#pragma mark---------- 可变字符串 NSMutableString { // 可变字符串继承于NSString不可变字符串的方法。 // NSMutableString 可以使用父类的方法,以下除外: // NSMutableString *str = @"不能用"; // 创建: NSMutableString *str = [[NSMutableString alloc] init]; [str setString:@"hello ya "]; NSLog(@"%@", str); // 增加/拼接 [str appendString:@"friend "]; NSLog(@"%@", str); [str appendFormat:@"%d", 87]; // 格式化拼接 NSLog(@"%@", str); // 插入,按指定的位置:atIndex [str insertString:@"Oh " atIndex:0]; NSLog(@"%@", str); // 删除 从指定位置开始,按指定的长度删除 NSRange range = {3, 5}; [str deleteCharactersInRange:range]; NSLog(@"%@",str); // 从指定位置开始,按指定的长度替换,可能会覆盖你之前的内容,是替换,不是插入 [str replaceCharactersInRange:NSMakeRange(3, 5) withString:@"HELLO"]; NSLog(@"%@", str); [str release]; }
1.11 例题:
{ /* 给定一个图片文件名,判断字符串中是否以“png”结尾,如果是就替换成“jpg”,如果不是,就拼接”.jpg ”。 */ // 可变字符串 NSMutableString *str = [[NSMutableString alloc] init]; [str setString:@"hgfhfjfkf.png"]; if ([str hasSuffix:@".png"]) { [str replaceCharactersInRange:NSMakeRange([str length] - 4, 4) withString:@".jpg"]; NSLog(@"%@",str); }else{ [str appendString:@".jpg"]; NSLog(@"%@",str); } // 不可变字符串 NSString *str1 = @"hgfhfjfkf.png"; if ([str1 hasSuffix:@".png"]) { NSLog(@"%@", [str1 stringByReplacingOccurrencesOfString:@".png" withString:@".jpg"]); }else{ NSLog(@"%@", [str1 stringByAppendingString:@".jpg"]); } }
转载地址:https://blog.csdn.net/Evelynzn/article/details/48728617 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月06日 07时20分12秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
SAP Commerce(原Hybris)的一些架构图,持续更新
2019-04-27
如何使用R语言在SAP Analytics Cloud里绘制各种统计图表
2019-04-27
阿里云上的docker安装
2019-04-27
重新安装SCCM 2012 client,解决Windows10 1909在线更新问题
2019-04-27
使用jasmine.createSpyObj具有依赖关系的Angular服务进行单元测试
2019-04-27
MAYA 绑定 批量 关联属性 (手指FK 2 SK)
2019-04-27
c语言格式化浮点数多余的0
2019-04-27
Linux快速创建文件命令
2019-04-27
Linux下挂载U盘
2019-04-27
ubtunu开机黑屏无桌面解决方法
2019-04-27
Linux开发_退格符的花样用法
2019-04-27
Linux开发_判断程序是否以管理员权限运行(root/sudo)
2019-04-27
Windows核心编程_实现QQ好友来消息时任务栏头像闪烁功能
2019-04-27
CMake构建_增加编译选项(debug&&release)
2019-04-27
Cmake构建_指定gcc/g++版本
2019-04-27
Cmake构建_设置全局编译选项
2019-04-27
Cmake构建_设置debug与release不同名字
2019-04-27
Cmake构建_设置debug与release输出路径
2019-04-27