OC-FUNDATION-NSString&NSMutableString&NSNumber&NSValue&NSDate

1. NSString

1.1创建方法(3种):
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //创建方法
        NSString *str1 = [[NSString alloc]init];//创建的是空字符串,没有意义
        NSString *str2 = @"Hello World";//讲一个字符串对象直接赋值给str2.@是一个对象运算符,创建的都是常量对象,保存在代码区
        NSString *str3 = @"Hello World";
        NSLog(@"%p",str2);
        NSLog(@"%p",str3);//str2和str3是同一个对象,如果两个常量对象完全相同,不会创建两个对象
        int a = 10;
        NSString *str4 = [NSString stringWithFormat:@"%@ World %d",@"Hello",a];//格式化创建,通过占位符,把其他的数据转换为字符串
        NSLog(@"%@",str4);
        NSString *str5 = [NSString stringWithFormat:@"%@ World %d",@"Hello",10];
        NSLog(@"%p",str4);//stringWithFormat创建的对象即使内容相同,也会是完全不同的对象
        NSLog(@"%p",str5);
    }
    return 0;
}

运行结果:
2016-08-25 09:43:14.913 day20_01[731:43371] 0x100001048
2016-08-25 09:43:14.914 day20_01[731:43371] 0x100001048
2016-08-25 09:43:14.915 day20_01[731:43371] Hello World 10
2016-08-25 09:43:14.915 day20_01[731:43371] 0x1002041b0
2016-08-25 09:43:14.915 day20_01[731:43371] 0x100100710

1.2截取方法(3种):
        NSString *str6 = @"www.baidu.com";
        NSString *str7 = [str6 substringToIndex:3];//从第一个字符开始截取几个字符(截取头)
        NSLog(@"%@",str7);
        NSString *str8 = [str6 substringFromIndex:10];//从指定位置开始截取到最后一个字符(截取尾)
        NSLog(@"%@",str8);
        NSString *str9 = [str6 substringWithRange:NSMakeRange(4,5)];//从指定位置开始连续截取几个字符(截取中段)
        NSLog(@"%@",str9);

运行结果:
2016-08-25 09:49:35.936 day20_01[784:45364] www
2016-08-25 09:49:35.936 day20_01[784:45364] com
2016-08-25 09:49:35.937 day20_01[784:45364] baidu

1.3拼接方法(3种)
        NSString *str10 = @"Hello";
        NSString *str11 = @" World";
        NSString *str12 = [[NSString alloc]initWithFormat:@"%@%@",str10,str11];//初始化拼接
        NSLog(@"%@",str12);
        NSString *str13 = [str10 stringByAppendingString:str11];//追加拼接
        NSLog(@"%@",str13);
        NSString *str14 = [str10 stringByAppendingFormat:@"%d %@",a,str11];//格式化拼接,可以自动转换其他类型数据成字符串后拼接
        NSLog(@"%@",str14);
1.4替换方法
        NSString *str15 = @"www.baidu.com";
        NSString *str16 = [str15 stringByReplacingCharactersInRange:NSMakeRange(4, 5) withString:@"google"];
        NSLog(@"%@",str16);

运行结果:
2016-08-25 10:29:58.298 day20_01[849:52810] www.google.com

1.5从文件中读入字符串
        NSString *str17 = [NSString stringWithContentsOfFile:@"/Users/tarena/Desktop/testString" encoding:NSUTF8StringEncoding error:nil];
        NSLog(@"%@",str17);
1.6用占位符%@输出自定义类的对象
-(NSString*)description
{
    NSString *stu = [NSString stringWithFormat:@"姓名:%@ 年龄:%d 性别:%@ 住址:%@",self.name,self.age,self.gender == 1?@"男":@"女",self.addr];
    return stu;
}
        SHStudent *stu = [[SHStudent alloc]initWithName:@"张三" andAge:18 andGender:YES andAddr:@"江苏南京"];
        [stu show];
        NSLog(@"%@",stu);

运行结果:
2016-08-25 11:01:38.825 day20_01[965:63324] 张三 18 男 江苏南京
2016-08-25 11:01:38.825 day20_01[965:63324] 姓名:张三 年龄:18 性别:男 住址:江苏南京

1.7判断两个字符串相等的方法
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //从键盘输入一个用户名和密码,与文件中保存的对比,如果相同,显示登陆成功,否则显示用户名或密码错误
        NSString *str = @"string";
        if ([str isEqualToString:@"string"]) {
            NSLog(@"相同");
        }
        char *userName = (char*)malloc(sizeof(char));
        char *pwd = (char*)malloc(sizeof(char));
        NSString *userName1;
        NSString *pwd1;
        NSString *userAndPwd = [NSString stringWithContentsOfFile:@"/Users/tarena/Desktop/userAndPwd" encoding:NSUTF8StringEncoding error:nil];
        int i = 0;
        for (i = 0;[[userAndPwd substringWithRange:NSMakeRange(i, 1)] isEqualToString:@" "]==NO; i ++);
        userName1 = [userAndPwd substringToIndex:i];
        pwd1 = [userAndPwd substringFromIndex:i+1];
        NSLog(@"请输入用户名:");
        scanf("%s",userName);
        NSLog(@"请输入密码");
        scanf("%s",pwd);
        if ([userName1 isEqualToString:[NSString stringWithFormat:@"%s",userName]] && [pwd1 isEqualToString:[NSString stringWithFormat:@"%s",pwd]]) {
            NSLog(@"登陆成功");
        }
        else
            NSLog(@"用户名或密码错误");
        free(userName);
        free(pwd);
    }
    return 0;
}

运行结果:
2016-08-25 11:55:16.666 day20_02[1119:75949] 相同
2016-08-25 11:55:16.667 day20_02[1119:75949] 请输入用户名:
shuan
2016-08-25 11:55:18.844 day20_02[1119:75949] 请输入密码
132
2016-08-25 11:55:20.039 day20_02[1119:75949] 用户名或密码错误

2. NSMutableString

2.1是可变字符串,是NSString的子类
2.2创建方法(4种)
//创建方法
NSMutableString *str1 = [[NSMutableString alloc]init];//空字符串,有意义,效率低
NSMutableString *str2 = [NSMutableString stringWithCapacity:100];//预估值
//NSMutableString *str3 = @"abc";//str3会退化成不可变字符串,不能这样初始化可变字符串
NSMutableString *str4 = [NSMutableString stringWithString:@"string"];//创建可变字符串的对象同时初始化
NSMutableString *str5 = [NSMutableString stringWithFormat:@"age:%d",6];//创建可变字符串对象的同时,进行格式化的方法
2.3添加方法(2种)
[str2 appendString:@"The word, string, "];//追加添加方法
NSLog(@"%@",str2);
[str2 appendString:@"has six characters"];
NSLog(@"%@",str2);
NSMutableString *str6 = [NSMutableString stringWithString:@"string"];
[str6 appendFormat:@" has %lu characters",str6.length];
NSLog(@"%@",str6);
2.4求字符串中字符的个数,即求字符串长度
2.5删除方法(1种)
2.6确定子串在整个字符串中的范围
NSMutableString *str7 = [NSMutableString stringWithString:@"I'm learing OBJective-C language."];
//[str7 deleteCharactersInRange:NSMakeRange(12, 10)];
[str7 deleteCharactersInRange:[str7 rangeOfString:@"OBJective-"]];//不用数字符串个数
NSLog(@"%@",str7);
2.7替换方法
NSMutableString *str8 = [NSMutableString stringWithString:@"This is a string"];
[str8 replaceCharactersInRange:[str8 rangeOfString:@"a"] withString:@"another"];
NSLog(@"%@",str8);

3. NSNumber

3.1用于将基本数据类型的数据或变量封装成OC的类
3.2封装方法:numberWith...
3.3拆封方法:...Value
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int a = 10;
        NSNumber *i = [NSNumber numberWithInt:a];//封装,将基本数据类型的数据变成OC类的对象
        NSLog(@"%@",i);
        int b;
        b = [i intValue];//拆封,将OC;类的对象还原成基本数据类型的数据
        NSLog(@"%d",b);
        float f = 3.14;
        NSNumber *f1 = [NSNumber numberWithFloat:f];
        NSLog(@"%@",f1);
        float f2 = [f1 floatValue];
        NSLog(@"%f",f2);
    }
    return 0;
}

4.NSValue

4.1NSValue是NSNumber的父类
4.2用于封装结构体类型的变量
#import <Foundation/Foundation.h>
typedef struct
{
    int x;
    int y;
}SHPoint;

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        SHPoint point;
        point.x = 10;
        point.y = 20;
        NSValue *value = [NSValue valueWithBytes:&point objCType:@encode(SHPoint)];
        NSLog(@"%@",value);
        SHPoint point1;
        [value getValue:&point1];
        NSLog(@"%d %d",point1.x,point1.y);
    }
    return 0;
}

5.NSData

5.1OC中的日期时间类
5.2创建对象即可得到世界标准时间
5.3本地时间需要通过一个格式代码转换
#import "NSDate+SHLocalTime.h"

@implementation NSDate (SHLocalTime)
-(NSDate *)localTime
{
    return [NSDate localTime];
}
+(NSDate *)localTime//本地时间
{//以下为格式代码
    NSTimeZone *zone  = [NSTimeZone systemTimeZone];
    NSUInteger integer = [zone secondsFromGMTForDate:[NSDate date]];
    NSDate *localTime = [[NSDate date]dateByAddingTimeInterval:integer];
    return localTime;
}
@end
5.4获取指定时间
5.5时间间隔(3种)
NSDate *date1 = [NSDate date];
NSLog(@"%@",date1);//世界标准时
NSDate *date2 = [NSDate dateWithTimeIntervalSinceNow:30];
NSLog(@"%@",date2);
date2 = [NSDate dateWithTimeIntervalSinceNow:-30];
NSLog(@"%@",date2);
NSTimeInterval seconds = [date1 timeIntervalSince1970];
NSLog(@"%lf",seconds);
NSDate *date3 = [NSDate dateWithTimeIntervalSinceNow:-60];
seconds = [date3 timeIntervalSinceNow];
NSLog(@"%lf",seconds);
NSDate *time1 = [NSDate dateWithTimeIntervalSinceNow:-60*60*24];
NSDate *time2 = [NSDate dateWithTimeIntervalSinceNow:60*60*24];
seconds = [time1 timeIntervalSinceDate:time2];
NSLog(@"%lg",seconds);
5.6格式化输出时间
NSDateFormatter *df = [[NSDateFormatter alloc]init];
df.dateFormat = @"yyyy年MM月dd日 HH:mm:ss EEEE";
NSString *str = [df stringFromDate:date1];
NSLog(@"%@",str);

思考练习:
1、根据身份证号码,求出生年月日
2、输出当前时间的年月日
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
解析:

#import <Foundation/Foundation.h>

NSDate *localTime()
{
    NSTimeZone *zone = [NSTimeZone systemTimeZone];
    NSUInteger integer = [zone secondsFromGMTForDate:[NSDate date]];
    NSDate *localTime = [[NSDate date]dateByAddingTimeInterval:integer];
    return localTime;
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *readIDCard = [NSString stringWithContentsOfFile:@"/Users/tarena/Desktop/IDCard" encoding:NSUTF8StringEncoding error:nil];
        NSString *year = [readIDCard substringWithRange:NSMakeRange(6, 4)];
        NSString *month = [readIDCard substringWithRange:NSMakeRange(10, 2)];
        NSString *day = [readIDCard substringWithRange:NSMakeRange(12, 2)];
        NSLog(@"%@年%@月%@日",year,month,day);

        NSLog(@"%@",localTime());
        NSDate *now = [NSDate date];
        NSDateFormatter *date = [[NSDateFormatter alloc]init];
        date.dateFormat = @"yyyy年MM月dd日";
        NSString *dateNow = [date stringFromDate:now];
        NSLog(@"%@",dateNow);
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值