美文网首页
iOS开发 NSString处理:截取字符串 拼接字符串 比较字

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

作者: cukiy | 来源:发表于2018-12-05 16:57 被阅读0次

创建示例字符串

// 用到的字符串
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)#>];

相关文章

网友评论

      本文标题:iOS开发 NSString处理:截取字符串 拼接字符串 比较字

      本文链接:https://www.haomeiwen.com/subject/gvewcqtx.html