8月17日NSString

一、字符串的创建
  1.     //1.创建常量字符串
  2.     NSString *str1 = @"hello world";
  3.     NSLog(@"%@",str1);
  4.     //2.通过类方法创建字符串
  5.     NSString *str2 = [NSString stringWithString:str1];
  6.     NSLog(@"str2 = %@",str2);
  7.     //3.通过实例方法创建字符串
  8.     NSString *str3 = [[NSString alloc]initWithString:str1];
  9.     NSLog(@"str3 = %@",str3);
  10.     //4.通过格式化方式创建字符串
  11.     NSString *str4 = [NSString stringWithFormat:@"user = %@,pwd = %@",@"xu",@"123456"];
  12.     NSLog(@"str4 = %@",str4);
  13.     //5.通过C语言字符串创建
  14.     const char *str5 = "how are you";
  15.     NSString *str6 = [NSString stringWithUTF8String:str5];
  16.     NSLog(@"str6 = %@",str6);
  17.     //6.通过文件方式创建字符串
  18.     NSError *error;
  19.     NSString *str7 = [NSString stringWithContentsOfFile:@"/Users/mac/Desktop/OC进行时/day06/01-NSString/1.txt" encoding:NSUTF8StringEncoding error:&error];
  20.     if (!error) {
  21.         NSLog(@"str7 = %@",str7);
  22.     }
  23.     else
  24.     {
  25.         NSLog(@"文件读取失败:%@",error);
  26.     }
  27.     //7.通过URL方式创建字符串
  28.     NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
  29.     NSString *str8 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
  30.     if (!error) {
  31.         NSLog(@"str8 = %@",str8);
  32.     }
  33.     else
  34.     {
  35.         NSLog(@"文件读取失败:%@",error);
  36.     }
二、字符串的比较
  1.     NSString *str1 = @"hello world";
  2.     NSString *str2 = @"how are you";
  3.     NSString *str3 = [NSString stringWithString:str1];//使用已有的字符串创建新的字符串
  4.     //方式1
  5.     if (str1 == str3){
  6.         NSLog(@"str1 == str3");
  7.     }
  8.     //方式2
  9.     if ([str1 isEqual:str3]) {
  10.         NSLog(@"str1 == str3");
  11.     }
  12.     //方式3
  13.     if ([str1 isEqualTo:str3]) {
  14.         NSLog(@"str1 == str3");
  15.     }
  16.     //方式4
  17.     if([str1 isEqualToString:@"hello world"])
  18.     {
  19.         NSLog(@"str1 == str3");
  20.     }
  21.     //方式5
  22.     NSComparisonResult result = [str1 compare:str2];
  23.     if (result == NSOrderedSame) {
  24.         NSLog(@"str1 == str2");
  25.     }
  26.     else if (result == NSOrderedAscending)
  27.     {
  28.         NSLog(@"str1 < str2");
  29.     }
  30.     else//NSOrederDescending
  31.     {
  32.         NSLog(@"str1 > str2");
  33.     }
  34.     /*
  35.      compare的是一个枚举类型的,如果返回值为:-1表示NSOrderedAscending;返回值为0:NSOrderedSame;返回值为1:NSOrderedDescending
  36.      */
三、字符串检索
  1.      NSString *str1 = @"how are you";
  2.     NSRange range = [str1 rangeOfString:@"are"];
  3.     NSLog(@"location = %ld,length = %ld",range.location,range.length);
  4.     NSString *str2 = @"http://www.baidu.com”;
  5. //判断字符串是否以某前缀开头
  6.     if ([str2 hasPrefix:@"http://"]) {
  7.         NSLog(@"http协议");
  8.     }
  9. //判断字符串是否以某后缀结尾
  10.     NSString *str3 = @"/users/destTop/1.txt";
  11.     if ([str3 hasSuffix:@"txt"]) {
  12.         NSLog(@"文本文件");
  13.     }
  14.     NSString *str4 = @"http://www.baidu.com?user=admin&pwd=123456";
  15.     NSRange range1 = [str4 rangeOfString:@"user="];
  16.     NSRange range2 = [str4 rangeOfString:@"pwd="];
  17.     NSUInteger location = range1.location + range1.length;
  18.     NSUInteger length = range2.location-location;
  19.     NSRange range3 = NSMakeRange(location, length);
  20.     NSString *user = [str4 substringWithRange:range3];
  21.     NSString *pwd = [str4 substringFromIndex:range2.location + range2.length];
  22.     NSLog(@"user = %@,pwd =%@",user,pwd);

 

四、其他类型转换字符串

  1.     NSString *str1 = [NSString stringWithFormat:@"%d,%.2f,%c,%s",10,12.34,'a',"hello world"];
  2.     NSLog(@"str1 = %@",str1);
  3.     //1.字符串转整型
  4.     NSString *str2 = @"20";
  5.     NSInteger i = [str2 integerValue];
  6.     NSLog(@"i = %ld",i);
  7.     //2.字符串转实型
  8.     CGFloat j = [str2 doubleValue];
  9.     NSLog(@"j = %.2lf",j);
  10.     //3.字符串转C语言字符串
  11.     NSString *str4 = @"how are you";
  12.     const char *pStr = [str4 UTF8String];
  13.     NSLog(@"pStr = %s",pStr);
 
五、可变字符串的常用操作
   //1.创建
  NSMutableString *str = [NSMutableString stringWithCapacity : 容量];
   //2.添加内容
  [str appendSting:@“hello world”];
  [str appendFormat:@“%d”,123];
  //这两种插入方式都在尾部进行插入;
  //3.插入内容:  
  [str insertString:@“ok “ atIndex:插入位置];
  //4.替换内容
  NSRange range = [str rangeOfString:@“world”];  
  [str replaceCharactersInRange:range withString:@“WORLD”];
  //5.删除内容
  [str deleteCharactersRange:range];
  //6.设置成其他字符串
  [str setString:@“how are you”];
 
六、自定义结构体
  //1、创建一个Student为例:
  1.   typedef struct
  2.   {  
  3.     char *name;
  4.     int age;
  5.     char gender;
  6.   }Student;
  7.   Student stu = {“zhangsan”,22,’F’};
  8.   NSValue *value = [NSValue valueWithBytes:&stu objcType:@encode(Student)];
  9.   NSLog(@“name = %s,age = %d,gender = %c”,stu.name,stu.age,stu.gender);
  10.   Student stu2;
  11.   [value getValue:&stu2];
  12.   NSLog(@“name = %s,age = %d,gender = %c”,stu2.name,stu2.age,stu2.gender);

  /* 封装自定义结构体的操作:

         1.声明结构体变量

         2.创建一个NSValue的值对象,并将结构体变量的地址存放进去,

         3.也可以通过getValue将值对象存储的数据存放到另外一个结构体变量中。

         */

  2、在Foundation下的常用结构体NSRange、NSPoint、NSSize、NSRect
   //1.创建一个结构体变量,用来确定范围
  1. NSRange range = NSMakeRange(0,5);
  2. //2.创建一个值对象
  3. NSValue *value = [NSValue valueWithRange:range];
  4. //3.取出这个值对象的值
  5. NSRange range2 = [value rangeValue];
   NSPoint、NSSize、NSRect与NSRange的操作雷同,不再一一列举。
 
七、NSArray
  //1、创建
  1. NSArray *arr1 = @[@"one",@"two",@"three",@"four”];
  2. //通过对象
  3. NSArray *arr2 = [NSArray arrayWithObjects:@"one",@"two",@"three",@"four", nil];
  4. NSArray *arr3 = [[NSArray alloc]initWithObjects:@"one",@"two",@"three",@"four", nil];
  5. NSArray *arr4 = [[NSArray alloc]initWithArray:arr3];  
   //2、遍历
  1. //第一种:
  2. for (int i = 0; i<[arr2 count]; i++) {
  3.     NSLog(@"arr2->%@",arr2[i]);
  4. }
  5. //第二种:
  6. for (int i = 0; i < [arr2 count]; i++) {
  7.     NSLog(@"arr2->%@",[arr2 objectAtIndex:i]);
  8. }
  9.  //第三种
  10. [arr2 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
  11.     NSLog(@"index = %ld,obj = %@",idx,obj);
  12.     if ([obj integerValue] == 3) {
  13.          *stop = YES;
  14.     }
  15. }];
  16. //第四种:
  17. for(id obj in arr2)
  18. {
  19.       NSLog(@"%@",obj);
  20. }