您的位置:首页 > 产品设计 > UI/UE

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  FUNDATION库