• OC_NSString、


    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. }
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    IDE-Android Studio 导入Ecplise项目不改变结构
    IDE-Android Studio -FAQ-使用习惯(不断更新 欢迎留言)
    IDE-Ecplise-代码注释 模版 编码规范 配色
    android- 远程调试
    phpstorm所有快捷键表格pdf
    phpstorm修改字体和大小
    phpstorm重构代码形式让阅读更简单
    七牛云到底好不好使用经历分享
    一篇文章搞懂php中类型转换
    彻底解决php判断a==0为真引发的问题-类型转换
  • 原文地址:https://www.cnblogs.com/xjf125/p/4737499.html
Copyright © 2020-2023  润新知