• Foundation 框架 NSString常用总结


    iOS开发过程中,从始至终都会和NSString打交道,在此总结一下NSString的常用的方法,在以后的学习过程中用到的方法也会继续添加

      NSString类是Foundation框架中得不可变字符串,当NSString创建完成后,字符串的内容不可更改,与之对应的是NSMutableString类

    一、NSString对象的创建

      1.使用类方法(stringWithFormat:)进行字符串创建,此方法可以动态的构建字符串,并且能够给字符串传递参数(推荐)

    1 NSString* str = [NSString stringWithFormat:@"曾经我打听过,你最近的生活 %@", @"love you"];
    2  NSLog(@"%@", str);

      2.其他创建方法

     1      // 把C字符串转成OC的字符串对象
     2         char* p = "I love beijing";
     3         NSString* testStr = [[NSString alloc] initWithFormat:@"%s",p ];
     4         NSLog(@"testString = %@",testStr);
     5         
     6         // 把OC字符串对象转成C字符串
     7         const char* newP = [testStr UTF8String];
     8         NSLog(@"newp = %s",newP);
     9         
    10         // 与格式控制字符串构建对象的实例方法对应的类方法
    11         // 使用(Foundation框架里的)类方法创建的对象,由自动释放池管理内存
    12         NSString* str2 = [NSString stringWithFormat:@"This is a OC sting %d",109];
    13         NSLog(@"str2 = %@",str2);
    14         //=============================================
    15         // 使用一个现有的字符串对象构建一个新的字符串对象
    16         NSString* str = @"I'm a oc string";
    17         NSString* str3 = [[NSString alloc] initWithString:str];
    18         NSLog(@"str3 = %@",str3);
    19         // 与之对应的类方法
    20         NSString* str4 = [NSString stringWithString:str];
    21         NSLog(@"str4 = %@",str4);
    22         
    23         //==============================================
    24         // 使用一个C字符串构建一个OC的字符串对象
    25         NSString* str5 = [[NSString alloc] initWithUTF8String:"This is a c String"];
    26         NSLog(@"str5 = %@",str5);
    27         // 与之对应的类方法
    28         NSString* str6 = [NSString stringWithUTF8String:"This is a c String"];
    29         NSLog(@"str6 = %@",str6);
    30         
    31         //==============================================
    32         // 使用文件内容构建一个字符串对象
    33         
    34         NSString* filePath = @"/Users/qianfeng/Desktop/test.txt";
    35         /* 
    36          第一个参数:读取的文件的路径
    37          第二个参数:指定编码集为NSUTF8String
    38          第三个参数:用于存放读取文件过程中的错误信息
    39          */
    40         NSError* error = nil;
    41         NSString* str7 = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
    42         NSLog(@"str7 = %@",str7);

    二、NSString常用操作

     1  //获取字符串长度(length)
     2         NSString* str = [NSString stringWithFormat:@"曾经我打听过,你最近的生活 %@", @"love you"];
     3         NSUInteger lenth = [str length];
     4         NSLog(@"%ld", lenth);
     5         NSLog(@"%@", str);
     6         //NSRange
     7         /*
     8          NSRange在Foundation框架中定义如下
     9          typedef struct _NSRange {
    10          NSUInteger location; //表示位置
    11          NSUInteger length; //长度
    12          } NSRange;
    13          */
    14         NSString* str2 = @"忙碌工作之余是否有运动?";
    15         NSString* subString = @"忙碌";
    16         //查找子串(从0开始)
    17         NSRange range = [str2 rangeOfString: subString];
    18         //打印框架内结构体的方法
    19         NSLog(@"%@", NSStringFromRange(range));
    20         //使用框架创建range
    21         NSRange newRange = NSMakeRange(5, 3);
    22         NSString* newTemp = [str2 substringWithRange: newRange];
    23         NSLog(@"%@", newTemp);
    24         //判断是否在父串中找到子串
    25         if (range.location == NSNotFound) {
    26             NSLog(@"Can't fount");
    27         }else{
    28             NSLog(@"Got it!");
    29         }
    30         //字符串比较(大小)
    31         NSString* strA = @"chengDu";
    32         NSString* strB = @"chongQing";
    33         //compare:方法的返回值类型为NSComparisonResult(枚举值),其中
    34         //NSOrderedSame表示相等 NSOrderedAscending表示升序(小于)
    35         //NSOrderedDescending 表示降序(大于)
    36         if ([strA compare: strB] == NSOrderedSame) {
    37             NSLog(@"相等");
    38         }else if([strA compare: strB] == NSOrderedAscending){
    39             NSLog(@"小于");
    40         }else{
    41             NSLog(@"大于");
    42         }
    43         //字符串比较(是否相等)
    44         BOOL isEqule = [strA isEqualToString: strB];
    45         NSLog(@"The result is : %d", isEqule);
    46         
    47         //判断字符串前后缀
    48         NSString *fileString = @"/Users/student/DeskTop/file.txt";
    49         //判断前缀(hasPrefix:)方法
    50         BOOL isPrefix = [fileString hasPrefix:@"/Users"];
    51         //判断后缀 (hasSuffix:)方法
    52         BOOL isSuffix = [fileString hasSuffix: @".txt"];
    53         NSLog(@"isPrefix = %d, isSuffix = %d", isPrefix, isSuffix);
    54         //字符串转换为数字
    55         /*
    56          框架提供的字符串转换的方法如下:
    57          - (double)doubleValue;
    58          - (float)floatValue;
    59          - (int)intValue;
    60          - (NSInteger)integerValue NS_AVAILABLE(10_5, 2_0);
    61          - (long long)longLongValue NS_AVAILABLE(10_5, 2_0);
    62          - (BOOL)boolValue NS_AVAILABLE(10_5, 2_0);
    63          */
    64         NSString* strToNum = @"12345.234";
    65         int result = [strToNum intValue];
    66         NSLog(@"result = %d", result);
  • 相关阅读:
    HD200703
    并查集——合作网络D306
    并查集——易爆物D305
    NOIP初赛知识点
    离散化
    wsl2启动时无法添加自启动和加载环境变量的解决办法
    wsl2上用docker部署运行环境,mvn构建镜像找不到dockerhost
    docker 创建自己的镜像仓库
    单机多容器管理(已转k8s工具,仅参考) docker compose简介+使用+遇到的坑
    ubuntu下载安装jdk+maven,配置ssh
  • 原文地址:https://www.cnblogs.com/pretty-guy/p/3974640.html
Copyright © 2020-2023  润新知