Objective-C 笔记 字符串操作

  这次总结下OC里一些对字符串的一些操作。

  创建字符串对象时,会创建一个内容不可更改的对象,称为不可变对象。可以使用NSString类处理不可变字符串。你经常需要处理字符串并更改字符串中的字符。例如,可能希望从字符串中删除一些字符,或对字符串执行搜索替换操作。这种类型的字符串是使用NSMutableString类处理的。

 1 //
 2 //  main.m
 3 //  Number_String_List_15
 4 //
 5 //  Created by SeanAstin on 15/12/30.
 6 //  Copyright © 2015年 SeanAstin. All rights reserved.
 7 //
 8 
 9 #import <Foundation/Foundation.h>
10 
11 int main(int argc, const char * argv[]) {
12     @autoreleasepool {
13         NSString *str1 = @"This is string A";
14         NSString *str2 = @"This is string B";
15         NSString *res;
16         NSComparisonResult  compareResult;
17         
18         //计算字符串中的值
19         NSLog(@"Length of str1: %lu",[str1 length]);
20         
21         //将一个字符串复制到另一个字符串
22         res = [NSString stringWithString:str1];
23         NSLog(@"copy: %@",res);
24         
25         //将一个字符串复制到另一个字符串的末尾
26         str2 = [str1 stringByAppendingString:str1];
27         NSLog(@"Concatentation: %@",str2);
28         
29         //验证两个字符串是否相等
30         if([str1 isEqualToString:res] == YES)
31             NSLog(@"str1 == res");
32         else
33             NSLog(@"str1 != res");
34         
35         //验证一个字符串是否小于、等于或大于另一个字符串
36         compareResult = [str1 compare:str2];
37         if(compareResult ==  NSOrderedAscending)
38             NSLog(@"str1 < str2");
39         else if(compareResult == NSOrderedSame)
40             NSLog(@"str1 == str2");
41         else//必须是NSorderedDescending
42             NSLog(@"str1 > str2");
43         
44         //将字符串转换为大写
45         res = [str1 uppercaseString];
46         NSLog(@"Uppercase conversion: %s",[res UTF8String]);
47         
48         //将字符串转换为小写
49         res = [str1 lowercaseString];
50         NSLog(@"Lowercase conversion: %@",res);
51     }
52     return 0;
53 }
 1 //
 2 //  main.m
 3 //  Number_String_List_15
 4 //
 5 //  Created by SeanAstin on 15/12/30.
 6 //  Copyright © 2015年 SeanAstin. All rights reserved.
 7 //
 8 
 9 #import <Foundation/Foundation.h>
10 
11 int main(int argc, const char * argv[]) {
12     @autoreleasepool {
13         NSString *str1 = @"This is string A";
14         NSString *str2 = @"This is string B";
15         NSString *res;
16         NSRange subRange;
17         
18         //从字符串中提取前3个字符
19         res = [str1 substringToIndex:3];
20         NSLog(@"First 3 chars of str1: %@",res);
21         
22         //提取从索引5开始直到结尾的子字符串
23         res = [str1 substringFromIndex:5];
24         NSLog(@"Chars from index 5 of str1: %@",res);
25         
26         //提取从索引8开始索引到13的子字符串(6个字符)
27         res = [[str1 substringFromIndex:8] substringToIndex:6];
28         NSLog(@"Chars from index 8 through 13: %@",res);
29         
30         //更简单的方法
31         res = [str1 substringWithRange:NSMakeRange(8, 6)];
32         NSLog(@"Chars from index 8 through 13: %@",res);
33         
34         //从另一个字符串中查找一个字符串
35         subRange = [str1 rangeOfString:@"string A"];
36         NSLog(@"String is at index %lu, length is %lu",subRange.location,subRange.length);
37         subRange = [str1 rangeOfString:@"string B"];
38         if(subRange.location == NSNotFound)
39             NSLog(@"String not found");
40         else
41             NSLog(@"String is at index %lu, length is %lu",subRange.location,subRange.length);
42         
43     }
44     return 0;
45 }

  NSMutableString类可以用来创建可以更改字符的字符串对象。因为是 NSString类的子类,所以可以使用NSString类的所有方法。

  在讲述可变于不可变字符串对象时,我们谈到了更改字符串中的实际字符。任意一个可变或不可变字符串对象在程序执行期间,总是可以被设为完全不同的字符串对象的。

 1 //
 2 //  main.m
 3 //  Number_String_List_15
 4 //
 5 //  Created by SeanAstin on 15/12/30.
 6 //  Copyright © 2015年 SeanAstin. All rights reserved.
 7 //
 8 
 9 #import <Foundation/Foundation.h>
10 
11 int main(int argc, const char * argv[]) {
12     @autoreleasepool {
13         NSString *str1 = @"This is string A";
14         NSString *search,*replace;
15         NSMutableString *mstr;
16         NSRange substr;
17         
18         //从不可变字符串创建可变字符串
19         
20         mstr = [NSMutableString stringWithString:str1];
21         NSLog(@"%@",mstr);
22         
23         //插入字符
24         [mstr insertString: @" mutable" atIndex:7];
25         NSLog(@"%@",mstr);
26         
27         //插入末尾进行有效拼接
28         [mstr insertString:@" and string B" atIndex:[mstr length]];
29         NSLog(@"%@",mstr);
30         
31         //直接使用appendString
32         [mstr appendString:@" and string C"];
33         NSLog(@"%@",mstr);
34         
35         //根据范围删除子字符串
36         [mstr deleteCharactersInRange:NSMakeRange(16, 13)];
37         NSLog(@"%@",mstr);
38         
39         //查找然后将其删除
40         substr =  [mstr rangeOfString:@"string B and "];
41         if(substr.location != NSNotFound){
42             [mstr deleteCharactersInRange:substr];
43             NSLog(@"%@",mstr);
44         }
45         
46         //直接设置为可变的字符串
47         [mstr setString:@"This is string A"];
48         NSLog(@"%@",mstr);
49         
50         //替换一些字符
51         [mstr replaceCharactersInRange:NSMakeRange(8, 8) withString:@"a mutable string"];
52         NSLog(@"%@",mstr);
53         
54         //查找和替换
55         search = @"This is";
56         replace = @"An example";
57         substr = [mstr rangeOfString: search];
58         if(substr.location != NSNotFound){
59             [mstr replaceCharactersInRange:substr withString:replace];
60             NSLog(@"%@",mstr);
61         }
62         
63         //查找和替换所有匹配项
64         search = @"a";
65         replace = @"X";
66         substr = [mstr rangeOfString:search];
67         while(substr.location != NSNotFound){
68             [mstr replaceCharactersInRange:substr withString:replace];
69             substr = [mstr rangeOfString:search];
70             
71         }
72         NSLog(@"%@",mstr);
73     }
74     return 0;
75 }
原文地址:https://www.cnblogs.com/SeanAstin/p/5092002.html