NSString
字符串比较
NSString *str =@"abc";
NSString *str2 = @"ADC";
NSComparisionResult res = [str1 compare:str2];
// NSOrderedAscending / NSOrderedDescending / NSOrderedSame
res = [str1 compare:str2 options:NSCaseInsensitiveSearch];
字符串拼接
NSString *str =@"abc";
NSString *str2 = @"ADC";
NSString* res = [str stringByAppendingString:str2];
// res = @"abcADC"
字符串内容比较(upper lower case sensitive)
[str0 isEqualToString:str1]
字符串前后缀检查 prefix
NSString*url = @"http://www.fb.com/1.png";
BOOL isAddress = [url hasPrefix:@"http://"];
BOOL isImage = [url hasSuffix:@"png"];
字符串查找
//首次出现的位置: RangeOfString
//返回值:NSRange (location, length)
//找不到用length 是否为0判断,因为找不到location返回NSNotFound
NSString* str1 = @"abc";
NSString* str2 = @"ereabcc";
NSRange index = [str2 rangeOfString:str1];
NSLog(@"%zd, %zd", index.location, index.length);
//NSRange:
NSRange range = NSMakeRange(5, 4);
//NSRange 转换为字符串
NSString* str = NSStringFromRange(range);
字符串截取
(NSString *)substringFromIndex:(NSUInteger)from; 从指定位置from开始(包括
指定位置的字符)到尾部
(NSString *)substringToIndex:(NSUInteger)to; 从字符串的开头一直截取到指
定的位置to,但不包括该位置的字符
(NSString *)substringWithRange:(NSRange)range; 按照所给出的NSRange从
字符串中截取子串
NSString *url = @"http://www.facebook.com";
NSLog(@"%@", [url substringFromIndex:7]);
// www.facebook.com
NSLog(@"%@", [url substringToIndex:7]);
// http:/
NSRange range = NSMakeRange(11, 8);
NSLog(@"%@", [url substringWithRange:range]); // facebook
字符串替换
NSString* str ="abc-dcb";
str = [str stringByReplacingOccurrencesOfString:@"-" withString:@"."];
字符串分割
//定义字符串
NSString*str =@"400-588-1688";
NSArray *arr = [str componentsSeparatedByString:@"-"];
NSLog(@"%@",arr);
类名转字符串
NSStringFromClass([xxx class]);
字符串转类型
NSClassFromString(@"UIApplication");
字符串其他用法
//获取字符 及 ASCII
NSString *str ="abc";
unichar c = [str characterAtIndex:i];
int i = c;
//字符串转整型
//intValue, floatValue, doubleValue
NSString *str =@"-123";
NSInteger num = [str intValue];//-123
NSURL vs NSString
NSArray
只能存放对象,
不能存放基本数据类型:int float double char enum struct
不能存放nil(用[NSNULL null]替代)
//获取对象
NSLog(@"%@", [arr2 objectAtIndex:2]);
NSLog(@"%@", arr2[5]);
//获取位置,没有反回NSNotFound
NSLog(@"%zd", [arr2 indexOfObject:@2]);
if ([arr2 indexOfObject:@33] == NSNotFound) {
NSLog(@"nothing");
}
//是否包涵
if ([arr2 containsObject:@2]) {
NSLog(@"确实包涵2");
}
//firstObject, lastObject
数组存放字典
NSArray* labels = @[
@{
@"icon":@"1.png",
@"name":@"sdf"
},
@{
@"icon":@"1.png",
@"name":@"kjh"
},
@{
@"icon":@"1.png",
@"name":@"kml"
}
];
遍历
三种方式:
普通循环
快速枚举: for (NSString* str in arr) {}
block: enumUsingWithBlock();
//NSArray
NSArray *arrData = @[@1,@2,@3,@4];
// 1.Classical
for (int i=0; i< [arrData count]; i++){
NSLog(@"[%d]:%@",i,arrData[i]);
}
// 2.Fast iteration
for (id element in arrData){
NSLog(@"%@",element);
}
// 3.Blocks
[arrData enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"[%lu]:%@",idx,obj);
// Set stop to YES in case you want to break the iteration
}];
数组读写文件
//创建一个数组
NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
//写入数据到文件中
if ([arr writeToFile:@"/Users/liwei/Desktop/arr.plist" atomically:YES]) {
NSLog(@"写入成功!");
}
//创建一个数组,读取xml文件
NSArray *arr = [NSArray arrayWithContentsOfFile:@"/Users/liwei/D
esktop/arr.xml"];
NSLog(@"%@",arr);
//创建一个数组,读取plist
NSArray *arr = [NSArray arrayWithContentsOfFile:@"/Users/liwei/D
esktop/arr.plist"];
NSLog(@"%@",arr);
数组冒充字典:
//初始化
NSMutableArray *dict = [NSMutableArray array];
NSMutableArray *nums = [numbers mutableCopy];
//新增
[dict addObject:@(-1)]
//移除
[dict removeObject:@(2)];
//插入元素
[arryM insertObject:@"AOL" atIndex:1];
//交换
[nums exchangeObjectAtIndex:i withObjectAtIndex:j];
//第一个,最后一个
firstObject lastObject
//排序
[unsortArr sortedArrayUsingSelector:@selector(compare:)];
//遍历数组
for (id num in dict) {
[res addObject:num];
}
字典:可以数组对比
快速创建字典
@{@"zs" : @"zhangsan", @"ls" : @"lisi", @"ww" : @"Wangwu"};
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
//是否存在
if (dict[@(tmp)] != nil) {
}
//增加新的元素
dict[numbers[i]] = @(i);
//移除字典
[dict removeObjectForKey:numbers[i]];
[dict removeAllObjects];
//遍历字典
//遍历的是key值
for (id key in dict) {
if ([dict[key] integerValue] == arrs.count) {
[res addObject:key];
}
}
[dict enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id
_Nonnull obj, BOOL * _Nonnull stop) {
xxx;
}];
NSMutableArray
in the case of strings, arrays, and dictionaries, only immutable variants can be created with the literal syntax. If a mutable variant is required, a mutable copy must be taken, like so:
NSMutableArray*mutable = [@[@1, @2, @3, @4, @5]mutableCopy];
NSSet
// init
NSSet *set = [NSSet setWithObjects:@"red",@"black", @"orange", nil];
// containsObject
if ([set containsObject:@"red"]) {
NSLog(@"exist red");
}
// add/remove
NSMutableSet *set2 = [NSMutableSet set];
[set2 addObject:@"INTEL"];
[set2 addObject:@"APPLE"];
[set2 removeObject:@"APPLE"];
NSLog(@"%@", set2);
//remove duplicate
- (void) getUniqueArray {
NSArray *nums = @[@1, @2, @3, @4, @2, @1];
NSArray *uniNums = [[NSSet setWithArray:nums] allObjects];
NSLog(@"%@", uniNums);
}