OC 字符串与数组
//
// main.m
// oc第四讲
#import <Foundation/Foundation.h>
#import "book.h"
int main(int argc, const char * argv[]) {
#pragma mark --NSString 字符串---
//NSString不可变字符串,即创建之后不能修改(进行一个增 删 改的操作)(readonly)只读
//创建一个空的字符串
// NSString *string=[[NSString alloc]init];
// NSLog(@"%@",string);
//
// //根据给定的常量去创建NSString对象(创建常量区的字符串)
// NSString *string1=@"imac";
// NSLog(@"%@",string1);
// NSLog(@"%p",string1);
//
// //创建堆区的字符串
// NSString *string2=[[NSString alloc]initWithFormat:@"iphone"];
//
// NSLog(@"%@",string2);
// NSLog(@"%p",string2);
//
//
// //如果创建的字符串中会有其他变量 那么我们就要使用initWithFormat 这种方式去创建
// //可以将我们一些数值拼接到我们字符串中
// NSInteger num=6;
// NSString *string3=[[NSString alloc]initWithFormat:@"iphone%lds",num];
// NSLog(@"%@",string3);
//便利构造器方法
// NSString *str1=[NSString string];
// NSString *str2=[NSString stringWithString:@"iphone"];
// //等同于
// NSString *str3=@"iphone";
//
// NSLog(@"%@",str2);
//
//获取字符串长度
//
// NSString *str=@"huluwatum";
// // NSUInteger length=[str length];
// NSLog(@"%lu",[str length]);
//
//
//
// //判断前缀,返回值为bool类型,所以我们使用%d占位.返回值只有两种结果 0,1;
// BOOL result=[str hasPrefix:@"hu"];
// NSLog(@"%d",result);
//
//
// //判断后缀
// BOOL resu=[str hasSuffix:@"tum"];
// NSLog(@"%d",resu);
//字符串截取(获取字符串);
// //from 打印出从对应的下标开始到最后的字符串
// NSString *str=@"huluwaaotum";
// NSString *substring=[str substringFromIndex:4];
// NSLog(@"%@",substring);
//
//
// NSString *substring1=[str substringFromIndex:6];
// NSLog(@"%@",substring1);
//
// //to 打印出到指定下标之前(不包括当时下标)的字符串
// NSString *subs=[str substringToIndex:4];
// NSLog(@"%@",subs);
//
// //NSRange:他是一个结构体 他有两个参数:location(位置),lenght(长度)
//
//
//
// //从下标为2的字符串截取,截取的长度是3个字符
// NSRange range={2,3};
//
// NSString *substr=[str substringWithRange:range];
//
// NSLog(@"%@",substr);
//
//拼接字符串,
//1.并没有改变原有的字符串,只是将拼接好的字符串作为了返回值用新的字符串去接收.
// NSString *str=@"iphone";
// NSString *str1=@"6s";
// //这里是将str1这个字符串拼接到str这个字符串之后,形成了新的字符串
// NSString *newstr=[str stringByAppendingString:str1];
// NSLog(@"%@",newstr);
//
// //2.stringByAppendingFormat如果后边拼接 有两个字符串并没有使用占位符的话,系统会默认值拼接第一个字符串,如果使用占位符的话,那么会将占位符当中的字符串进行拼接.
// NSString *newstr2=[str stringByAppendingFormat:str1,str];
// NSLog(@"%@",newstr2);
//
//
// NSString *newstr1=[str stringByAppendingFormat:@"%@,%@",str1,str];
//
// NSLog(@"%@",newstr1);
//
//替换:
// //将我们第一个中的字符串替换成为第二个参数中的字符串
// NSString *str=@"huluwaxiaojingang";
// NSString *newstr=[str stringByReplacingOccurrencesOfString:@"hul" withString:@"HUL"];
// NSLog(@"%@",newstr);
//
//
//
// //字符串比较
// NSString *str3=[[NSString alloc]initWithFormat:@"huluwa"];
// NSString *str4=[[NSString alloc]initWithFormat:@"jinggang"];
//
// //方法是 isEqualToString//比较的是两个字符串当中的内容
// if ([str3 isEqualToString: str4]) {
// NSLog(@"字符串相等");
// }else{
// NSLog(@"字符串不相等");
//
// }
//
// // == 双等于号 比较是两个字符串的地址,如果地址一样,说明内容一样
//
//
// if (str3==str4) {
// NSLog(@"字符串相等");
// }else{
// NSLog(@"字符串不相等");
//
// }
//
//
//
//
// //大小写转换
// //将字符串转化为大写
// NSString *string=@"ios";
// NSString *newstring=[string uppercaseString];
// NSLog(@"%@",newstring);
// //转换为小写
// NSString *newstring1=[string lowercaseString];
// NSLog(@"%@",newstring1);
//
// //首字母大写
// NSString *newstring2=[string capitalizedString];
// NSLog(@"%@",newstring2);
//给定一个图片,判断字符串中是否以 png 结尾,如果是就替换城 jpg,如果不是就拼接 .jpg
// NSString *string=@"123.jtg";
//
// BOOL str=[string hasSuffix:@"png"];
//
//
// if (str) {
// string=[string stringByReplacingOccurrencesOfString:@"png" withString:@"jpg"];
// }else {
//
// string=[string stringByAppendingString:@".jpg"];
//
// }
// NSLog(@"%@",string);
#pragma mark --可变字符串NSMutablestring--
//可变字符串
// NSMutableString是NSString的子类
// //首先创建一个可变字符串
// NSMutableString *nutablestr=[NSMutableString stringWithString:@"12344"];
// NSLog(@"%@",nutablestr);
//
// //拼接:
//
// NSString *string123=[NSString stringWithFormat:@"asdfg"];
//
//[nutablestr appendString:@"asdfg"];
// [nutablestr appendFormat:@"%@",string123];
// NSLog(@"%@",nutablestr);
//
//插入
// //讲一个字符串插入到指定下标位置
// [nutablestr insertString:@"abc" atIndex:3];
// NSLog(@"%@",nutablestr);
//
//
// //删除
// //NSRange
// NSRange delrange={2,4};
// //从下标为2的位置开始删除长度为4的字符串
// [nutablestr deleteCharactersInRange:delrange];
// NSLog(@"%@",nutablestr);
//
/*
不可变字符串的修改操作本质上就是得到一个新的字符串
不可变字符串的修改方法以string开头,有返回值
可变字符串的修改方法没有返回值,他修改的是原字符串,
//使用 nsmutablestring给定一个图片,判断字符串中是否以 png 结尾,如果是就替换城 jpg,如果不是就拼接 .jpg
*/
// NSMutableString *string=[NSMutableString stringWithFormat:@"12345.jpg"];
// //判断
// if ([string hasSuffix:@"png"]) {
// //可变字符串替换
//rangeOfString 这个方法就是返回我们png 在当前字符串中所在的位置
// NSRange range=[string rangeOfString:@"png"];
// //替换
// [string replaceCharactersInRange:range withString:@"jpg"];
//
// }else{
//
// //拼接
// [string appendString:@".jpg"];
//
//
// }
// NSLog(@"%@",string);
#pragma mark -- 数组对象NSArray--
//数组对象
//不可变数组
// //arrayWithObjects便利构造器的方法,创建了一个不可变数组对象,结尾nil表示的是结束
// NSArray *array=[NSArray arrayWithObjects:@"a",@"b",@"c",@"d", nil];
// NSLog(@"array=%@",array);
//
// //获取数组当中元素个数
// //count
// NSLog(@"array=%ld",[array count]);
//
// //获取数组当中某一个位置(下标)上的值
// NSLog(@"index=%@",[array objectAtIndex:1]);
//
//
// //可变数组
//
// NSMutableArray *muarray=[NSMutableArray arrayWithCapacity:0];
//
// //给可变数组添加元素
// //将上边array(不可变数组)添加到可变数组muarray中;
//
// [muarray addObjectsFromArray:array];
// NSLog(@"muarray=%@",muarray);
//
// //插入
//
//
// //将我们对象插入到指定下标的位置当中
//
// [muarray insertObject:@"2" atIndex:2];
// NSLog(@"muarray=%@",muarray);
//
//
// //删除
// //删除指定下表的元素
// [muarray removeObjectAtIndex:1];
// NSLog(@"muarray=%@",muarray);
//删除数组当中所有元素
//[muarray removeAllObjects];
// NSLog(@"%@",muarray);
//遍历数组元素
//for (这里放的是我们要遍历数组当中元素的类型 in 这里放的是遍历的数组) {
// }
//
// for (NSString *str in muarray) {
// NSLog(@"%@",str);
// }
//图书管理
//1.使用可变数组管理所有书籍(定义 book类,包含书名,价格)
//2.数组可以添加删除书籍
//3.可以从数组根据书名查找书籍且修改书籍价格
//4展示所有书籍清单
// book *b=[[book alloc]initWithName:@"如来神掌" price:10];
// book *b1=[[book alloc]initWithName:@"到爆天" price:20];
// book *b2=[[book alloc]initWithName:@"葵花宝典" price:2];
// book *b3=[[book alloc]initWithName:@"九阴真经" price:66];
//
// //创建一个可变数组
//
// NSMutableArray *array=[NSMutableArray arrayWithObjects:b,b1,b2,b3, nil];
//
//// for (NSString *str in array) {
//// NSLog(@"%@",str);
//// }
//
//
// //添加
//
// book *b5=[[book alloc]initWithName:@"悲伤牛" price:88];
// //往可变数组当中添加新的书籍(对象)
// [array addObject:b5];
// //遍历
// for (NSString *str in array) {
// NSLog(@"%@",str);
// }
//
// //删除
// [array removeObject:b1];
// for (book *b in array) {
// NSLog(@"%@,%.2f",b.name,b.price);
// }
//
//
// for (book *b in array) {
// if ([[b name]isEqualToString:@"如来神掌"]) {
// [b setPrice:200];
//
// }
// NSLog(@"%@,%.2f",b.name,b.price);
// }
#pragma mark-- 值对象--
// NSNumber
//创建一个NSNumber对象
//将我们基本数据类型转换成对象(值对象)
// numberWithInt将int类型转换成NSNumber类型
//
// NSNumber *num=[NSNumber numberWithInt:10];
// NSLog(@"%@",num);
//
// //intvalue:将我们值对象转化为基本数据类型
// NSLog(@"num=%d",[num intValue]);
//
#pragma mark -- NSValue---
//
// //NSValue 数值类,可以将指针或结构体转化成对象
//
// int a=10;
// int *p=&a;
// //将指针类型转化成对象类型
// NSValue *value=[NSValue valueWithPointer:p];
// NSLog(@"%@",value);
// //将对象类型转化成指针类型
// int *newp=[value pointerValue];
// NSLog(@"%d",*newp);
//NSRange
// NSRange range={13,15};
// //将 NSRange转换成nsvalue对象
// NSValue *rangevalue=[NSValue valueWithRange:range];
// NSLog(@"%@",rangevalue);
//
// //将nsvalue 转化成nsrange
// NSRange newrange={0};
// newrange=[rangevalue rangeValue];
// NSLog(@"%lu,%lu",newrange.location,newrange.length);
/*
比较
compare:
*/
//使用语法糖创建NSNunber // NSArray *array=@[@1,@2,@3,@4];
NSNumber *num1=@100;
NSNumber *num2=@100;
//NSComparisonResult//枚举类型
NSComparisonResult result=[num1 compare:num2];
NSLog(@"%ld",result);
switch (result) {
case NSOrderedAscending://-1
NSLog(@"前小后大");
break;
case NSOrderedDescending://1
NSLog(@"前大后小");
break;
case NSOrderedSame://0
NSLog(@"前后相等");
break;
default:
break;
}
return 0;
}
// book.h
#import <Foundation/Foundation.h>
@interface book : NSObject
{
NSString *_name;//书名
CGFloat _price;//价格
}
-(void)setName:(NSString *)name;
-(NSString *)name;
-(void)setPrice:(CGFloat)price;
-(CGFloat)price;
-(instancetype)initWithName:(NSString *)name
price:(CGFloat)price;
+(instancetype)bookWithName:(NSString *)name
price:(CGFloat)price;
@end
//
// book.m
#import "book.h"
@implementation book
-(void)setName:(NSString *)name{
_name=name;
}
-(NSString *)name{
return _name;
}
-(void)setPrice:(CGFloat)price{
_price=price;
}
-(CGFloat)price{
return _price;
}
-(instancetype)initWithName:(NSString *)name
price:(CGFloat)price{
self=[super init];
if (self) {
_name=name;
_price=price;
}
return self;
}
+(instancetype)bookWithName:(NSString *)name
price:(CGFloat)price{
book *b=[[book alloc]initWithName:name price:price];
return b;
}
@end