• 类方法和字符串





    类方法
    【说明】以‘+’开头的方法,通过类名调用
    + (void)print
    {
        //类方法不能使用成员变量
        //_age = 10;
        //类方法不能调用对象方法
        //[self test];
        NSLog(@"This is class + method");
        [self test1];
    }

      //调用类方法
            [JYDog print];
    【特点】
            1、可以和对象方法同名
            2、不能访问成员变量
            3、不能调用对象方法
            2和3都是因为没有对象
    【作用】
            1、创建对象或简单地创建对象
            2、提供简洁易用的对外接口
            3、创建单例对象
            是一种设计模式,所有创建对象的方法都只能创建一个对象

    【说明】
        1、Foundation.h导入了几乎所有的C常用的基本的头文件,
                离开它不能写出OC的代码。
        2、Foundation.h提供了三大基本类库:【字符串】【数组】【字典】
        3、程序中可以使用两种字符串C字符串和OC字符串,
                以后只要不做特别说明默认使用OC字符串。

    一、不可变字符串NSString
    1、创建
    //最简单的方式创建
    NSString *str1 = @"我是OC字符串";
    //用一个字符串创建另一个字符串
    NSString *str2 = [[NSString alloc] initWithString:str1];
    //格式化的创建字符串
    NSString *str3 = [[NSString alloc] initWithFormat:@"%d %d %.2f",12,34,5.67];
    //用C字符串创建
    NSString *str4 = [[NSString alloc] initWithUTF8String:"我是C创建OC字符串"];

    //每一个initWith都对应一个stringWith的类方法
    NSString *str5 = [NSString stringWithString:str2];
    NSString *str6 = [NSString stringWithFormat:@"%d,%.2f",250,3.14];
    NSString *str7 = [NSString stringWithUTF8String:"abcdefg"];

    2、长度
    NSUInteger len = [str length];

    3、获取单个字符
    unichar ch = [str characterAtIndex:8];
            NSLog(@"ch = %C", ch);

    4、比较
        1、比较是否相等
                BOOL ret = [str1 isEqualToString:str2];
        2、比较字符串大小
                NSComparisonResult ret2 = [str1 compare:str2];
                NSOrderedAscending  右边大
                NSOrderedSame       一样大
                NSOrderedDescending 左边大
        3、不区分大小写的比较
                ret2 = [str3 caseInsensitiveCompare:str4];

    5、查找子串范围(首次出现的位置)
        NSRange range = [str rangeOfString:@"蓝翔"];

    6、子串提取
            NSString *subStr1 = [str2 substringToIndex:3];
      NSString *subStr2 = [str2 substringFromIndex:5];
      NSRange ran = {3, 3};
      NSString *subStr3 = [str2 substringWithRange:ran];
      NSString *subStr3 = [str2 substringWithRange:   
        NSMakeRange(3, 3)];

    编外方法:
    1、字符串转数据(类似于atoi,atof)
        int intV = [str3 intValue];
        float floatV = [str3 floatValue];

    2、OC字符串转C字符串
              const char *p = [@"abc" UTF8String];

    NSString * ptr = [str2 uppercaseString];//将字符串中的所有小写字符转换成大写 不改变原来的字符串

    ptr = [str1 lowercaseString];//将字符串中的所有大写字符转换成小写 不改变原来的字符串

    ptr = [str3 capitalizedString];//将字符串中出现的第一个字母转换成大写,其余字母小写
    二、可变字符串NSMutableString
    【特有方法】
    1、设置(set)
    [mStr setString:@"abcd"];

    2、追加 (append)
    //追加一个字符串
    [mStr appendString:@"123"];
    //格式化的追加
    [mStr appendFormat:@"%d%c",250,'A'];

    3、插入 (insert)
    //在指定位置插入字符串
    [mStr insertString:@"hello" atIndex:2];

    4、删除(delete)
    //删除指定范围内的字符
    [mStr deleteCharactersInRange:NSMakeRange(2, 5)];

    5、修改(replace)
    //用字符串替换某个范围内的字符
    [mStr replaceCharactersInRange:NSMakeRange(2, 5)
        withString:@"hello"];

    练习题:
    0、练熟今天所有的方法的使用,包括pdf文档
    1、已知有两个字符串@“hello”和@“world”,
            用空格将它们拼接到一起。
    2、输入两个表示数字的C字符串,求出两个数字的和,
            要求和也要以OC字符串形式表示。
    3、已知字符串NSString *str = @“I love zhengzhou”,
            找出love的范围
    4、已知字符串NSString *str = @“I love zhengzhou”,
            从第3个字符提取到第5个字符
    5、If you do not leave me, I will by your side until the life         end.提取you到end之间的字符串,要求:不得查数
    6、编写一个分数的类
    @interface JYFraction : NSObject
    {
        int _numerator;   //分子
        int _denominator; // 分母
    }
    // 初始化方法
    - (id)initWithNumerator:(int)numerator andDenominator:(int)denominator;
    // setter方法
    - (void) setNumerator:(int)newNumerator;
    - (void) setDenominator:(int)newDenominator;
    // getter方法
    - (int) numerator;
    - (int) denominator;
    // 同时设置分子 分母
    - (void) setNumerator:(int)newNumerator andDenominator:(int)newDenominator;
    // 当前分数 + fraction2 (包含 + - * /)
    - (void) addFraction:(JYFraction *)fraction2;
    - (void) subFraction:(JYFraction *)fraction2;
    - (void) mulFraction:(JYFraction *)fraction2;
    - (void) divFraction:(JYFraction *)fraction2;
    // 约分
    - (void) reductionOfFraction;
    // 打印分数
    - (void) printFraction;

    @end

  • 相关阅读:
    阶段5 3.微服务项目【学成在线】_day18 用户授权_18-微服务之间认证-需求分析
    阶段5 3.微服务项目【学成在线】_day18 用户授权_17-细粒度授权-获取当前用户信息
    阶段5 3.微服务项目【学成在线】_day18 用户授权_16-细粒度授权-我的课程细粒度授权-测试
    阶段5 3.微服务项目【学成在线】_day18 用户授权_15-细粒度授权-我的课程细粒度授权-实现
    阶段5 3.微服务项目【学成在线】_day18 用户授权_14-细粒度授权-我的课程细粒度授权-需求分析
    阶段5 3.微服务项目【学成在线】_day18 用户授权_13-细粒度授权-细粒度授权介绍
    阶段5 3.微服务项目【学成在线】_day18 用户授权_12-前端集成认证授权-携带JWT授权
    阶段5 3.微服务项目【学成在线】_day18 用户授权_11-前端集成认证授权-身份校验
    阶段5 3.微服务项目【学成在线】_day18 用户授权_10-前端集成认证授权-需求分析
    阶段5 3.微服务项目【学成在线】_day18 用户授权_09-动态查询用户的权限-认证服务查询用户权限
  • 原文地址:https://www.cnblogs.com/rainwz/p/4589018.html
Copyright © 2020-2023  润新知