字符串 String
初始化定义
NSString *str=[[NSString alloc]initWithString:@"hello"];
NSLog(@"%@",str);
NSString *str=@"hello";
字符串中把c字符串转成oc字符串
NSString *str=[[NSString alloc]initWithUTF8String:@"hello"];
将其他类型格式化转为oc字符串类型的功能
NSString *str=[[NSString alloc]initWithFormat:@"hello"];
NSString *str=[NSString stringWithFormat:@"%d",num];
不可变字符串
返回字符串长度
-(NSUInteger)length
NSUInteger len=[str length];
一个汉字是一个字符,一个英文字母也是一个字符,字符串长度说的是字符个数 UTF-8
返回/取出单个字符
-(unichar)characterAtIndex:(NSUInteger)index;
unichar c=[str characterAtIndex:3];
比较两个字符串的大小关系
//两个字符串是否相等 isEqualToString //"=="比较的事两个指针变量所有指向的地址是否是同一个地址 str1=str2
-(BOOL)isEqualToString:(NSString*)a string
//比较两字符串大小 compare
-(NSComparisonResult)compare:(NSString*)a string
//不区分大小写比较大小 caseInsensitiveCompare
-(NSComparisonResult)caseInsensitiveCompare:(NSString*)a string
查找子串的位置和范围
-(NSRange)rangeOfString:(NSString*)a string
NSRange range=[str rangeOfString:@"str"];
NSString *str=@"how old are you";
NSRange range=[str rangeOfString:@"old"];
NSLog(@"%ld,%ld",range.location,range.length);
子串的提取
//从字符串对象中的from位置开始取到后面的所有内容,返回
NSString *str=@"how old are you ";
NSLog(@"%@",[str substringFromIndex:3]);
//从字符串到开始取到to的位置
NSLog(@"%@",[str substringToIndex:3]);
//从某个位置开始,取多长
NSRange range={3,5};
NSLog(@"%@",[str substringWithRange:range]);
字符串转化为基本数据类型
-(double)doubleValue;
-(float)floatValue;
-(int)intValue;
-(NSInteger)integerValue;
-(long long)longLongValue;
-(BOOL)boolValue;
NSString *str=@"12.3";
double d=[str doubleValue];
判断前后缀
//判读当前字符串是否是以aString为前缀
-(BOOL)hasPrefix:(NSString*)aString;
//判读当前字符串是否是以aString为前缀
-(BOOL)hasSuffix:(NSString*)aString;
NSString *str=@"ios android";
[str hasPrefix:@"ios"];
大小写转换
//把当前字符串转成大写
NSString *str=@"abc";
NSLog(@"%@",[str uppercaseString]);
//把当前字符串转成小写
NSString *str=@"ABC";
NSLog(@"%@",[str lowercaseString]);
//当前字符串中每个单词的首字母大写
-(NSString*)capitalizedString;
字符串分割
//按字符串整体分割,把当前字符串以separator作为分隔符进行分割
NSString *str=@"you me you me";
NSArray *arr=[str componentsSeparatedByString:@" "];
NSLog(@"%@",arr);
可变字符串
NSMutableString *str=[[NSMutableString alloc]init];
重置字符串内容
NSMutableString *str=[[NSMutableString alloc]initWithString:@"hello"];
[str setString:@"world"];
NSLog(@"%@",str);
增加
//追加子串
[str appendString:@"hhh"];
//追加格式化子串
[str appendFormat:@"%d %c %f",34,’t’,3.21];
//指定索引插入子串
[str insertString:@"ABC"atIndex:3];
删
NSRange range={5.5};
[str deleteCharacterInRange:range];
改
[str replaceCharactersInRange:range withString:@"xxx"];
查
rangeOfString
数组
NSArray *arr=[[NSArray alloc]initWithObjects:@"hello",@"are",@"you",nil];
NSArray *arr=@[@"one",@"two",@"three",dog];
不可变数组
根据索引,返回数组的元素
Dog * dog2 = [array1 objectAtIndex:0];
Dog * dog3 = array2[0];
返回数组的元素个数
NSUInteger count = [array count];
字符串的分割 componentsSeparatedByString
NSArray * subStrings = [str componentsSeparatedByString:@" "];
[str componentsSeparatedByCharactersInSet:<#(NSCharacterSet *)#>];
数组中字符串的拼接
NSString * _str = [数组对象名 componentsJoinedByString:@"*"];
数组的遍历 快速枚举法
//通过索引遍历
for (int i = 0; i < [array count]; i++) {
NSLog(@"%@", array[i]);
}
//快速枚举法又叫for in循环 (java中叫 for each循环)
for (NSString *str in array) {
//第一次循环str指向数组第一个元素,第二次循环,str指向数组第二个元素。。。
NSLog(@"%@", str);
}
由于数组里可防治任意类型的对象,所以objectAtIndex返回值为id
id表示任意类型
可变数组
重置可变数组(改)
[array setArray:@[@"One", @"Two", @"Three", @"Four"]];
增加元素
追加:
[array addObject:@"Five"];
插入:
[array insertObject:@"Six" atIndex:2];
删除元素
//删除元素
//删除指定元素,传入需要删除的元素的地址,删除这个元素
//如果要删的是字符串,只需传入和所删字符串相等的字符串就可以了,不用传入同一个字符串。
//如果数组中有多个@"Four"会把所有的@“Four”全部删除
[array removeObject:@"Four"];
//删除指定索引的元素
[array removeObjectAtIndex:2];
交换两个元素的位置
[array exchangeObjectAtIndex:0 withObjectAtIndex:2];
字典
NSDictionary * dict = [[NSDictionary alloc]initWithObjectsAndKeys:@"One", @"1", @"Two", @"2", @"Three", @"3", nil];//初始化时,先写值,再写键,
//直接初始化时,先写的是键,再写值;即:键,值;键,值;
NSDictionary * dict2 = @{@"1": @"One", @"2": @"Two", @"3": @"Three"};//不可变字典
不可变字典
返回键值对个数
NSUInteger count = [dict2 count];
通过键返回值
NSString * str = [dict2 objectForKey:@"2"];
返回所有的键或值
//返回所有的键
NSArray * keys = [dict2 allKeys];
//返回所有的值
NSArray * values = [dict2 allValues];
快速枚举法遍历
//快速枚举法遍历
for (NSString * key in dict2) {
//快速枚举法只能遍历字典的键
NSLog(@"%@", [dict2 objectForKey:key]);
//通过key再去查找值
}
可变字典
重置字典
[dict setDictionary:dict1];
添加键值对
//因为,键是唯一的;所以:setObject有两层意思:
//1)、当新的键值对里的键和字典里目前的所有键值对中的键有重复的话,就属于覆盖(即,用新的键值对中的值替换与之相等的键所对应的值)
//2)、当新的键值对的键,在字典没有相同的键,则属于添加。
[dict setObject:@"Four" forKey:@"0"];
删除键值对
[dict removeObjectForKey:@"0"];
属性修饰符
缺省修饰符
@property (readwrite) NSString * address;
//同时创建setter方法和getter方法
// 1.读写性的修饰符 readwrite,readonly
// 默认修饰:readwrite
@property (readonly) NSString * name;
// 1 生成一个成员变量:NSString *_name;
// 2 生成getter方法,但不生成setter方法
-(void)setName:(NSString *)name;
@property (nonatomic) NSString * name;
原子性修饰符
//atomic:表示是线程安全的。
//nonatomic:表示是非线程安全的,使用此属性性能会提高一些。
// 目前工程均是单线程的,用nonatomic
@property (setter=setterAge:, getter=getAge) int age;
setter getter (给方法起另外的名字)
// 1 如果方法有参数,需要加: 来表示有参数 (即setterAge:才是函数名称)
// 2 如果修饰符有多个,通过,分隔
// 3 改名之后只能用新名称
-(void)setAge:(int)age
网友评论