NSString :
NSString *str = @"hello world!";
NSString *str2 = [[NSString alloc] initWithString:str];
NSString *str3 = [[NSString alloc] initWithUTF85String:"hello world!"];
//用c的字符串创建OC的字符串对象
NSString *str4 = [[NSString alloc] initWithFormat:@"hello %d %c", 5, 'A'];
//使用格式符,拼接一个字符串
NSLog(@"%@", str);//打印字符串
后面三个通过alloc产生,必须通过release释放
创建临时字符串(自动释放):
NSString *str5 = [NSString stringWithUTF8String:"hello world!"];
NSString *str6 = [[NSString stringWithFormat:@"%d %@ %c", 1, @"hello world", 'R']];
NSString *str7 = [NSString stringWithString:str];
字符串自带很多方法
判断两个字符串是否相等:
BOOL ret = [str isEqualToString:str2];
NSLog(@"%d", ret); //输出为0,两个字符串不相等
判断两个字符串谁大谁小
NSComparisonResult ret = [str compare:str2];
if (ret == NSOrderedAscending)
{
NSLog(@"str < str2");
}
else if (ret == NSOrderedSame)
{
NSLog(@"str == str2");
}
else if (ret == NSOrderedDescending)
{
NSLog(@"str > str2");
}
显示字串在字符串中的位置
NSString * str = @"I am a so good man";
NSString *subStr = @"so";
NSRange range = [str rangeOfString:subStr];
NSlog(@"location:%lu length:%lu", range,location, range.length);
从字符串中提取新字符串生成新字符串,返回字符串地址
NSString *str = @"09081903";
NSString *str2 = [str substringToIndex:6];
//从str中提取从头至第6个字符串(不包括第6个,从0到5),生成新字符串,并返回字符串地址,开区间
生成一个新字符串,原字符串不变
NSString *str3 = [str substringFromIndex:6];
//从str中提取第6个字符(包括第6个),到最后一个字符,生成新字符串,返回字符串地址,闭区间
NSRange range = {3, 4};
NSString *str = [str substringWithRange:range];
//从第3个开始,提取4个
可以用NSMakeRange(3,4)
NSString *str = [str substringWithRange:NSMakeRange(3,4)];
字符串的一个子类:
可变字符串 :字符串
NSMutableString:增删改查
NSMutableString *Str = [[NSMutableString alloc] init];
[str setString:@"hello"];
增:
追加:append
[str appendString:@"123"];
[str appendFormat:@"%c",'D'];
插入:insert
[str insertString:@"XXXX" atIndex:4];(从0开始数)
[str insertString:[NSString stringWithFormat:@"%d", -54] atIndex:7];
//插入特殊字符,可以通过创建一个临时字符串的方法
删:delete
[str deleteCharactersInRange:NSMakeRange(3,5)];
改:replace
[str replaceCharactersInRange:NSMakeRange(3,2) withString:@"RRRRRRRRRR"];
替换字符串的长度可以不一样
数组:
NSArray NSMutableArray
NSArray *array = [[NSArray alloc] initWithObjects:@"One", @"Two",@"Three", nil];
//数组的元素可以是任意的对象
//数组中装有元素的地址
//可以装在两个数组中,因为放的都是地址
NSLog(@"%@",array);
//打印数组就是打印数组的每个元素
//%@ , 对象 打印的是description的返回值
遍历:
//枚举器法
NSEnumerator * enumerator = [array objectEnumberator];
id obj;
while (obj = [enumerator nextObject])
{
NSLog(@"%@", obj);
}
快速枚举法:
for (id obj in array)
{
NSLog(@"%@", obj);
}
使用i值遍历
NSUInteger length = [array count];
obj = [array objectAtIndex:2];
NSInteger i;
for (i=0; i<[array count]; i++)
{
NSLog(@"%@", [array objectAtIndex:i]);
}
可变数组:
改变数组元素的个数和顺序
NSMutableArray *array = [[NSMutableArray alloc] init];
//创建一个空数组
[array addObject:@"one"];
[array addObject:@"two"];
//增加元素
[array removeObject:@"One"];//是同一个one如果字符串的内容完全相同,两者是同一个对象
[array remveObjectAtIndex:1];
//删除元素
//交换元素顺序
[array exchangeObjectAt:0 withObjectAtIndex:2];
使用枚举器法进行遍历,正序遍历的时候,对数组进行改变会出错,逆序遍历的时候,不会出错
NSMutableArray *array = [[NSMutableArray alloc] initWithObject:@"ont", @"Two", @"Three", nil];
NSEnumerator *enumerator = [array objectEnumerator];//正序遍历
NSString *str;
while (str = [enumerator nextObject])
{
[array removeLastObject]; //只会正常输出第一次
}
NSEnumerator *enumerator = [array reverseObjectEnumerator];//逆序遍历
//逆序遍历的时候允许修改数组的顺序和个数
使用i值遍历,可以进行修改
快速枚举法不能进行修改
//数组和字符串的联合使用
NSString *str = @"I am a so good man";
NSArray *array = [str componentsSeparatedByString:@" "];//用空格分割字符串,返回地址
NSLog(@"%@", array);
NSMutableArray *mutablearray = [[NSMutableArray alloc] init];
NSEnumerator *enumerator = [array reverseObjectEnumerator];//逆序遍历
NSString *obj;
while (obj = [enumerator nextObject])
{
[mutableArray addObject:obj];
}
NSLog(@"%@", mutableArray);
//将数组中内容拼成一个新字符串
NSString * newStr = [mutableArray componentsJoinByString:@" "];
NSLog(@"%@", newStr);
字典 可变字典
NSDictionary NSMutableDictionary
NSDictionary *dict = [[NSDictionary alloc] initWithObjectAndKeys:@"one", @"1", @"Two", @"2",@"Three", @"3", nil];
//字典中的元素是以键值对的形式存储
//@"one",@"1"组成了一个键值对
//@"one"成为值(value),@"1"成为键(key)
//键值对的值和键,都是任意的对象,但是键往往使用字符串
//字典存储对象的地址没有顺序
NSLog(@"%@", dict);
遍历:键的遍历和值的遍历
//键的遍历 枚举器法
NSEnumerator *enumerator = [dicct keyEnumerator];
id obj;
while (obj = [enumerator nextObject])
{
NSLog(@"%@", obj);
}
//值的遍历
NSEnumerator *enumerator = [dicct objectEnumerator];
id obj;
while (obj = [enumerator nextObject])
{
NSLog(@"%@", obj);
}
//快速枚举法
NSString *str = [dict objectForkey:@"1"];//通过键找到值
for (id obj in dict)
{
NSLog(@"%@", obj); //键值
NSLog(@"%@", [dict objectForKey:obj]);//根据键找到值
}
可变字典
添加键值对
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"One" forKey:@"1"];
[dict setObject:@"Two" forKey:@"2"];
删除键值对
[dict removeObjectForKey:@"1"];
NSString *str = @"hello world!";
NSString *str2 = [[NSString alloc] initWithString:str];
NSString *str3 = [[NSString alloc] initWithUTF85String:"hello world!"];
//用c的字符串创建OC的字符串对象
NSString *str4 = [[NSString alloc] initWithFormat:@"hello %d %c", 5, 'A'];
//使用格式符,拼接一个字符串
NSLog(@"%@", str);//打印字符串
后面三个通过alloc产生,必须通过release释放
创建临时字符串(自动释放):
NSString *str5 = [NSString stringWithUTF8String:"hello world!"];
NSString *str6 = [[NSString stringWithFormat:@"%d %@ %c", 1, @"hello world", 'R']];
NSString *str7 = [NSString stringWithString:str];
字符串自带很多方法
判断两个字符串是否相等:
BOOL ret = [str isEqualToString:str2];
NSLog(@"%d", ret); //输出为0,两个字符串不相等
判断两个字符串谁大谁小
NSComparisonResult ret = [str compare:str2];
if (ret == NSOrderedAscending)
{
NSLog(@"str < str2");
}
else if (ret == NSOrderedSame)
{
NSLog(@"str == str2");
}
else if (ret == NSOrderedDescending)
{
NSLog(@"str > str2");
}
显示字串在字符串中的位置
NSString * str = @"I am a so good man";
NSString *subStr = @"so";
NSRange range = [str rangeOfString:subStr];
NSlog(@"location:%lu length:%lu", range,location, range.length);
从字符串中提取新字符串生成新字符串,返回字符串地址
NSString *str = @"09081903";
NSString *str2 = [str substringToIndex:6];
//从str中提取从头至第6个字符串(不包括第6个,从0到5),生成新字符串,并返回字符串地址,开区间
生成一个新字符串,原字符串不变
NSString *str3 = [str substringFromIndex:6];
//从str中提取第6个字符(包括第6个),到最后一个字符,生成新字符串,返回字符串地址,闭区间
NSRange range = {3, 4};
NSString *str = [str substringWithRange:range];
//从第3个开始,提取4个
可以用NSMakeRange(3,4)
NSString *str = [str substringWithRange:NSMakeRange(3,4)];
字符串的一个子类:
可变字符串 :字符串
NSMutableString:增删改查
NSMutableString *Str = [[NSMutableString alloc] init];
[str setString:@"hello"];
增:
追加:append
[str appendString:@"123"];
[str appendFormat:@"%c",'D'];
插入:insert
[str insertString:@"XXXX" atIndex:4];(从0开始数)
[str insertString:[NSString stringWithFormat:@"%d", -54] atIndex:7];
//插入特殊字符,可以通过创建一个临时字符串的方法
删:delete
[str deleteCharactersInRange:NSMakeRange(3,5)];
改:replace
[str replaceCharactersInRange:NSMakeRange(3,2) withString:@"RRRRRRRRRR"];
替换字符串的长度可以不一样
数组:
NSArray NSMutableArray
NSArray *array = [[NSArray alloc] initWithObjects:@"One", @"Two",@"Three", nil];
//数组的元素可以是任意的对象
//数组中装有元素的地址
//可以装在两个数组中,因为放的都是地址
NSLog(@"%@",array);
//打印数组就是打印数组的每个元素
//%@ , 对象 打印的是description的返回值
遍历:
//枚举器法
NSEnumerator * enumerator = [array objectEnumberator];
id obj;
while (obj = [enumerator nextObject])
{
NSLog(@"%@", obj);
}
快速枚举法:
for (id obj in array)
{
NSLog(@"%@", obj);
}
使用i值遍历
NSUInteger length = [array count];
obj = [array objectAtIndex:2];
NSInteger i;
for (i=0; i<[array count]; i++)
{
NSLog(@"%@", [array objectAtIndex:i]);
}
可变数组:
改变数组元素的个数和顺序
NSMutableArray *array = [[NSMutableArray alloc] init];
//创建一个空数组
[array addObject:@"one"];
[array addObject:@"two"];
//增加元素
[array removeObject:@"One"];//是同一个one如果字符串的内容完全相同,两者是同一个对象
[array remveObjectAtIndex:1];
//删除元素
//交换元素顺序
[array exchangeObjectAt:0 withObjectAtIndex:2];
使用枚举器法进行遍历,正序遍历的时候,对数组进行改变会出错,逆序遍历的时候,不会出错
NSMutableArray *array = [[NSMutableArray alloc] initWithObject:@"ont", @"Two", @"Three", nil];
NSEnumerator *enumerator = [array objectEnumerator];//正序遍历
NSString *str;
while (str = [enumerator nextObject])
{
[array removeLastObject]; //只会正常输出第一次
}
NSEnumerator *enumerator = [array reverseObjectEnumerator];//逆序遍历
//逆序遍历的时候允许修改数组的顺序和个数
使用i值遍历,可以进行修改
快速枚举法不能进行修改
//数组和字符串的联合使用
NSString *str = @"I am a so good man";
NSArray *array = [str componentsSeparatedByString:@" "];//用空格分割字符串,返回地址
NSLog(@"%@", array);
NSMutableArray *mutablearray = [[NSMutableArray alloc] init];
NSEnumerator *enumerator = [array reverseObjectEnumerator];//逆序遍历
NSString *obj;
while (obj = [enumerator nextObject])
{
[mutableArray addObject:obj];
}
NSLog(@"%@", mutableArray);
//将数组中内容拼成一个新字符串
NSString * newStr = [mutableArray componentsJoinByString:@" "];
NSLog(@"%@", newStr);
字典 可变字典
NSDictionary NSMutableDictionary
NSDictionary *dict = [[NSDictionary alloc] initWithObjectAndKeys:@"one", @"1", @"Two", @"2",@"Three", @"3", nil];
//字典中的元素是以键值对的形式存储
//@"one",@"1"组成了一个键值对
//@"one"成为值(value),@"1"成为键(key)
//键值对的值和键,都是任意的对象,但是键往往使用字符串
//字典存储对象的地址没有顺序
NSLog(@"%@", dict);
遍历:键的遍历和值的遍历
//键的遍历 枚举器法
NSEnumerator *enumerator = [dicct keyEnumerator];
id obj;
while (obj = [enumerator nextObject])
{
NSLog(@"%@", obj);
}
//值的遍历
NSEnumerator *enumerator = [dicct objectEnumerator];
id obj;
while (obj = [enumerator nextObject])
{
NSLog(@"%@", obj);
}
//快速枚举法
NSString *str = [dict objectForkey:@"1"];//通过键找到值
for (id obj in dict)
{
NSLog(@"%@", obj); //键值
NSLog(@"%@", [dict objectForKey:obj]);//根据键找到值
}
可变字典
添加键值对
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"One" forKey:@"1"];
[dict setObject:@"Two" forKey:@"2"];
删除键值对
[dict removeObjectForKey:@"1"];