iOS开发 NSString处理:截取字符串 拼接字符串 比较字符串 文件路径处理

创建示例字符串

// 用到的字符串
NSString *testStr = @"abcdefg";
NSString *testStr1 = @"def";
// 路径字符串 
NSString *pathStr = @"/Users/cukiy/Desktop/test.m";

一、截取字符串

// 1. 从testStr中获取下标3之前的字符串
NSString *str1 = [testStr substringToIndex:3];
// str1打印结果:abc
    
// 2. 从testStr中获取下标3之后的字符串
NSString *str2 = [testStr substringFromIndex:3];
// str2打印结果:defg
    
// 3. 指定范围截取.从testStr中第二个字符开始截取3个字符
NSString *str3 = [testStr substringWithRange:NSMakeRange(2, 3)];
// str3打印结果:cde
    
// 4. 从testStr中字符"c"为界进行分割,返回包含两个字符串的数组
NSArray *array = [testStr componentsSeparatedByString:@"c"];
// array打印结果:ab,defg

二、检索和替换

// 1. 在testStr中查找字符串testStr1,如果能找到,就以NSRange的形式返回testStr1的位置和长度.如果没有找到,则返回一个位置为NSNotFound 长度为0的NSRange类型的对象
NSRange range = [testStr rangeOfString:testStr1];
NSLog(@"%@",NSStringFromRange(range));
// range打印结果:{3,3};
    
// 2. 将testStr中range范围内的内容替换为字符串@"xxx"
NSString *str4 = [testStr stringByReplacingCharactersInRange:NSMakeRange(2, 2) withString:@"xxx"];
// str4打印结果:abxxxefg
    
// 3. 将testStr中的@"abc"替换为@"123"
NSString *str5 = [testStr stringByReplacingOccurrencesOfString:@"abc" withString:@"123"];
// str5打印结果:123defg

三、比较字符串

// 1. 区分大小写比较两个字符串的大小,返回值是枚举类型
NSInteger res = [testStr compare:str1];
// 2. 不区分大小写比较两个字符串的大小,返回值是枚举类型
NSInteger res1 = [testStr caseInsensitiveCompare:str1];

// 3. 按照Mac系统Finder的排序规则进行比较操作.返回值是枚举类型
NSInteger res2 = [testStr localizedStandardCompare:str1];

 /**
  上面三个方法返回的枚举类型
  enum {
    NSOrderedAscending = -1, // 左边的对象小于右边的对象
    NSOrderedSame, // 两个对象大小相等
    NSOrderedDescending // 左边的对象大于右边的对象
  };
  typedef NSInteger NSComparisonResult;
  */

// 4. 判断两个字符串内容是否相同,如果相同就返回YES
BOOL res3 = [testStr isEqualToString:str1];

// 5. 判断str中是否包含str1,如果包含就返回YES
BOOL res4 = [testStr containsString:str1];

// 6. 判断str字符串是否以str1开头,如果是就返回YES
BOOL res5 = [testStr hasPrefix:str1];

// 7. 判断str字符串是否以str2结尾,如果是就返回YES
BOOL res6 = [testStr hasSuffix:str2];

四、拼接字符串

NSInteger age = 66;
// 1. 拼接字符串
NSString *str6 = [NSString stringWithFormat:@"my age is %ld",age];
// str6打印结果是:my age is 66
    
// 2. 在testStr后面追加字符串@"123";
NSString *str7 = [testStr stringByAppendingString:@"123"];
// str7打印结果:abcdefg123
    
// 3. 在testStr后面拼接字符串
NSString *str8 = [testStr stringByAppendingFormat:@"my age is %ld",age];
// str8打印结果:abcdefgmy age is 66

五、路径的处理

// 1. 获取路径中最后一个组成部分 
NSString *str9 = [pathStr lastPathComponent]; 
// str9打印结果:test.m      

// 2. 在路径后面添加一个字符串,根据需要会自动追加分割符 
NSString *str10 = [pathStr stringByAppendingPathComponent:@"xxx"]; 
// str10打印结果:/Users/cukiy/Desktop/test.m/xxx      

// 3. 删除路径中最后一个组成部分,如果返回的结果不是根路径,那么最后的路径分割符也会被删除 
NSString *str11 = [pathStr stringByDeletingLastPathComponent]; 
// str11打印结果:/Users/cukiy/Desktop      

// 4. 返回文件的扩展名.扩展名不包括".",如果没有扩展名则返回空字符串 
NSString *str12 = [pathStr pathExtension]; 
// str12打印结果:m      

// 5. 将"."和制定的扩展名添加到现有路径的最后一个组成部分上 
NSString *str13 = [pathStr stringByAppendingPathExtension:@"txt"]; 
// str13打印结果:/Users/cukiy/Desktop/test.m.txt      

// 6. 删除文件的扩展名(包括".").如果没有扩展名,则返回原来的字符串 
NSString *str14 = [pathStr stringByDeletingPathExtension]; 
// str14打印结果:/Users/cukiy/Desktop/test      

// 7. 使用数组中的元素来构建路径,结合的时候自动添加路径分割符"/".想要生成一个绝对路径的话,数组中的第一个元素使用@"/".路径的最后想以分割符"/"来结尾的话,数组的最后一个元素使用空字符串(加个空格)@" " 
NSArray *pathArray = @[@"/",@"Users",@"cukiy",@"Desktop",@"xxx.h",@" "]; NSString *str15 = [NSString pathWithComponents:pathArray]; 
// str15打印结果:/Users/cukiy/Desktop/xxx.h/      

// 8. 和pathWithComponents相反,把字符串当做路径来解析,将路径的各个组成部分放入数组中.如果是绝对路径,数组的第一个元素是@"/" 
NSArray *array1 = [pathStr pathComponents]; 
/* array1打印结果: 
( 
 "/", 
 Users, 
 cukiy, 
 Desktop, 
 "test.m" 
) 
*/      

// 9. 判断路径是不是一个绝对路径,如果是则返回YES 
BOOL res7 = [pathStr isAbsolutePath];

六、文件的输入和输出

// 1. 通过读取文件path中的内容来初始化一个NSString,文件的编码为enc.读取失败时会返回nil,并将错误信息设定到error.error设置为NULL不会返回任何错误信息 
NSString *str16 = [NSString stringWithContentsOfFile:<#(nonnull NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError * _Nullable __autoreleasing * _Nullable)#>]; 
     
// 2. 和上一个方法一样,不同的地方在于这个方法能够自动判别文件的编码,并通过enc返回 
NSString *str17 = [NSString stringWithContentsOfURL:<#(nonnull NSURL *)#> usedEncoding:<#(nullable NSStringEncoding *)#> error:<#(NSError * _Nullable __autoreleasing * _Nullable)#>];      

// 3.将字符串的内容写到以path为路径的文件中,写入的时候使用enc指定的编码,写入成功则返回YES. // atomically为YES的情况下,会先创建一个临时文件,把字符串的内容写入到临时文件中,写入成功后再把临时文件重命名为path指定的文件.通过这种方法,就算有同名文件存在,写入发生错误时也不会损坏原来的文件. atomically为NO的情况下,则直接输入字符串的内容到path指定的文件中.如果写入失败,则会在返回NO的同时把出错的原因写入到error中.并返回给方法调用者 
BOOL res8 = [testStr writeToFile:<#(nonnull NSString *)#> atomically:<#(BOOL)#> encoding:<#(NSStringEncoding)#> error:<#(NSError * _Nullable __autoreleasing * _Nullable)#>];
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,594评论 18 139
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,719评论 0 10
  • 当年弱冠韶光早。又四载、荣枯草。对镜梳妆人骤恼。繁星添鬓,青丝成槁,郎少歌难葆。 黄裳笑靥容颜好。善舞能文慰新皓。...
    梦秋凉丶阅读 360评论 0 2
  • 【原创诗歌】 行走不是为了远方的 那一方寂静无垠的田野 或者撩人心扉的诗意 原只为遇到已被流光轻抛 旧日的模样 独...
    淡淡青莲阅读 693评论 22 39
  • 作家篇 “妈妈,我一二年级读书不是很认真,等三年级开始我就认认真真读书,学习成绩很好,等初中毕业,爸爸就可以让我退...
    Wendy徐阅读 265评论 1 2