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!

  

posted on 2018-08-07 14:11  低头捡石頭  阅读(78)  评论(0编辑  收藏  举报

导航