类方法和字符串




类方法
【说明】以‘+’开头的方法,通过类名调用
+ (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

原文地址:https://www.cnblogs.com/rainwz/p/4589018.html