OC-FUNDATION-NSString&NSMutableString&NSNumber&NSValue&NSDate
2016-08-25 10:07
477 查看
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; }
相关文章推荐
- 读《About Face 4 交互设计精髓》12
- vector,deque,list,map,数组比较与分析
- String、StringBuffer、StringBuilder源码分析
- Unique Binary Search Trees
- UEditor手动调节其宽度
- CharSequence与String的区别
- tail queue代码阅读
- CocoaPod: 出现 Unable to satisfy the following requirements:required by 'Podfile'
- 加入购物车动画-UIBezierPath曲线的实用
- Xcode在playground的quick look框中显示对象自定义视图
- Xcode在playground的quick look框中显示对象自定义视图
- Xcode在playground的quick look框中显示对象自定义视图
- Unique Binary Search Trees
- java基础学习总结——GUI编程(一)
- Hadoop集成Hue详解
- HDU-1159-Common Subsequence
- 使用中文的 Cookie. name 与 value 都使用 UTF-8 编码
- 开源-界面:Android酷炫实用的开源框架(UI框架)
- 语句include和require的区别
- Codeforces Problem 709A Juicer(implementation)