您的位置:首页 > 其它

oc常用字符串方法,数组方法,字典方法整理大全

2015-08-23 09:42 627 查看
1.+(void)fun;

类方法没有隐藏参数self所以 1类方法不能引用实例变量。2类方法不能调用对象的方法。

类名直接调用类方法 [CFLCar func];留下简单的对外接口

1.NSString 一个字符根据编码占不同字节

%@ 是不可改变的字符串,每一个字符都不能改。只能查询。

NSMutableString是NSString的子串,是可变字符串;

(1)[str length] 字符串长度

[str characterAtlndex: i ]返回地 i 个字符;

(2)创建

NSString * p=@“dfsfa”;

[NSString stringWithString:@“%@ %@”,str,str2 ]; 复制

NSString * str5 = [NSString stringWithUTF8String:str2];

NSString * str4 = [NSString stringWithString:str1];

-(id)stringWithString;

-(id)stringWithFormat

-(id)stringWithUTF8String

2.字符串比较

//按字符串内容(逐个相比)比较大小

if(str1&&[str1 compare:str2]==NSOrderedSame){

NSLog(@"equal");

}

else if([str1 compare:str2]==NSOrderedDescending){

NSLog(@"Descending");

}

else {

NSLog(@"Ascending");

}

//比较相等

if([str1 isEqualToString:str2]==YES){

NSLog(@"相等");

}

//判断子串开头、结尾

NSString *str6=@"13654125251";

if([str6 hasPrefix:@“136"]==YES){ 

NSLog(@"YES");

}

if ([str6 hasSuffix:@"251"]) {

NSLog(@“yes");

}

3.查找子字符串的位 置和范围

NSString * str1 = @"床前明月光";

NSRange range = [str1 rangeOfString:@"月"];

if (range.location!=NSNotFound) {

NSLog(@"%lu,%lu",range.location,(unsigned long)range.length);

}

4.子串提取

NSString * str = @"Hello,world";

NSString * str1 = [str substringToIndex:5];

NSString * str2 = [str substringFromIndex:6];

NSString * str3 = [str substringWithRange:NSMakeRange(0, 5)];

NSLog(@"%@ %@ %@",str1,str2,str3);

5.字符串转其他类型

char name[20] = "Tom";

//c strng to NSString

NSString * str1 = [NSString stringWithFormat:@"%s",name];

NSString* str2 = [NSString stringWithUTF8String:name];

NSLog(@"%@ %@",str1,str2);

//NSString to C string

const char *str3 = [str1 UTF8String];

NSLog(@"%s",str3);

//NSString <==> number

NSString * str4 = @"123";

NSLog(@"%d %g",[str4 intValue],[str4 doubleValue]);

//大小写zhuanh

NSString * str5 = @"dskdjJKLKLK";

NSString * str6 = [str5 uppercaseString];

NSLog(@"%@ %@",str6,[str5 lowercaseString]);

//字符拼接

NSLog(@"%@",[str5 stringByAppendingFormat:@"%@",str6]);

6.可变字符串

NSMutableString 继承自 NSString

1.凡是NSString的方法,NSMutableString都能用

2.凡是传参需要传入NSString * 传入NSMutableString *也行

【专有方法】

1.重置字符串内容

[str setString:@"0123456789"];

2.增 append

[str appendString:@"9876543210"];

[str appendFormat:@"%d %c %.2f", 34, 'T', 2.34];

3.插入

[str insertString:@"ABC" atIndex:3];

4.删 delete

[str deleteCharactersInRange:range];

5.改 replace

[str replaceCharactersInRange:range withString:@“XXXXXXXXXXXXXXX”];(先找到range 用rangeofstring函数着字符串)

6查 rangeOfString:

7.字符串去除两端内容

NSString * str4 = @"kkd123ld";

//stringByTrimmingCharactersInSet去除字符串两端指定字符集内的字符

//去掉首尾两端的空格

NSString* str5 = [str4 stringByTrimmingCharactersInSet:[NSCharacterSet letterCharacterSet]];

NSLog(@"%@ \n%@",str4,str5);

NSString * str6 = @",md123./";

NSCharacterSet * mySet = [NSCharacterSet characterSetWithCharactersInString:@",md./"];

NSString * str7 = [str6 stringByTrimmingCharactersInSet:mySet];

NSLog(@"%@",str7);

删除字符串;=剩余元素以;=为分割的对象保存到数组

NSArray *array=[str2 componentsSeparatedByCharactersInSet:

[NSCharacterSet characterSetWithCharactersInString:@"; =“]];

8.将文件已字符串形式读入

NSString *p=[NSString stringWithContentsOfFile:@"/Users/qianfeng/Desktop/未命名.rtf"

encoding:NSUTF8StringEncoding error:nil];

(路径、编码方式、nil)

9.判断字符串中是否含有 某种类型的 元素

NSString *testString = @"春1mianBU觉晓";

int alength = [testString length];

for (int i = 0; i<alength; i++) {

char commitChar = [testString characterAtIndex:i];

NSString *temp = [testString substringWithRange:NSMakeRange(i,1)];

const char *u8Temp = [temp UTF8String];

if (3==strlen(u8Temp)){

NSLog(@"字符串中含有中文");

}else if((commitChar>64)&&(commitChar<91)){

NSLog(@"字符串中含有大写英文字母");

}else if((commitChar>96)&&(commitChar<123)){

NSLog(@"字符串中含有小写英文字母");

}else if((commitChar>47)&&(commitChar<58)){

NSLog(@"字符串中含有数字");

}else{

NSLog(@"字符串中含有非法字符");

}

}

id 是通用 对象 指针

内置类型要放到数组,需要封装

int a=10;

NSNumber *numA=[NSNumber numberWithInt:a];(封装对象)numA是对象

int b = [numA intValue];(解封装)

3.NSArray数组元素类型是id,是对象的地址。可以储存不同类型的对象

是不可变数组 NSMutableArray是可变数组

1.初始化

NSArray * a=[NSArray arrayWithObjects:@"1",@"2", nil];

NSArray *c=@[@“1”,@"2"]; NSArray *c=@[str1,str2];

2.遍历

(1)循环

NSInteger len=[c count]; 元素个数

id p = [c objectAtIndex: i ];得到制定下标的数组元素(对象地址)

(2)快速枚举

只能访问oc对象集合

for (id p in c) {

NSLog(@“%@“,p); (从头开始逐一给p直到c为nil。p最后为nil)



注意一个问题。在枚举期间不能修改集合

(3)枚举器

NSEnumerator * enumer=[c objectEnumerator];

id p;

while(p = [enumer nextObject]){

NSLog(@“%@”,p);

}

//创建一个逆序枚举器NSEnumerator * enume2 = [array reverseObjectEnumerator]; while (obj = [enume2 nextObject]) {

NSLog(@"obj = %@",obj); }

(1)(3)可增删数组元素 (2)速度较快

3.判定数组是否包含某个元素

BOOL is=[a containsObject:@“man”];

if (is){

NSLog(@“YES”);

}

4.得到数组第一个对象,最后一个对象(last)

NSLog(@"%@",[c firstObject]);

5.数组查找

NSLog(@"%lu",[c indexOfObject:@“2"]); 内容比较 返回下标

NSLog(@"%lu",[c indexOfObjectIdenticalTo:@“2"]) 地址查找

6.数组排序 前两种方法

sortedArrayUsingFunction:中函数必须自己写

NSArray *sortedArray = [array sortedArrayUsingFunction:compare context:nil];

//先比较姓 在比较名字

-(NSComparisonResult)compareLastName:(student*)stu{

NSComparisonResult result = [self.lastname compare stu.lastname];

if(result==NSOrderedSame){

result=[self.firstname compare:stu.firstname];

}

return result;

}

//输出用description重写

-(NSString* )description {

return [NSString stringWithFormat:@“%@%@“,self.lastname,self.firstname];

}

使用selector排序 (排序后产生新数组的不变的数组,原来数组不变,所以要用新的数组接收这个返回值);

sortedArrayUsingSelector 数组元素是foundation类的对象,不需要写比较方法,调用响应的类的比 较方法就可以

如果数组元素是自定义类的对象,在你的类里必须自己写一个比较函数

NSArray * array 2= [array sortedArrayUsingSelector:@selector(compare:)];调用compare方法进行排序默认从小到大

NSLog(@"%@",sortedArray);

6.可变数组

NSMutableString *array=[[NSMutableArray alloc] init];

//增 追加

[array addObject:@"Four"];

//插入

[array insertObject:@"Four" atIndex:1];

//删

[array removeAllObjects];

[array removeLastObject];

//删除指定索引处元素

[array removeObjectAtIndex:1];

//传入地址,删除指定元素,如果传入的是字符串,删除所有和字符串相等的元素。

[array removeObject:@"One"];

//改

//用某个对象,替换当前某索引处的元素

[array replaceObjectAtIndex:0 withObject:@"Five"];

//交换两个元素的位置

[array exchangeObjectAtIndex:0 withObjectAtIndex:2];

/*—————————————数组元素拼接成字符串

把数组元素拼接 成字符

NSString * ptr = [array componentsJoinedByString:@“###"];

删除字符串;=剩余元素以;=为分割的对象保存到数组

NSArray *array=[str2 componentsSeparatedByCharactersInSet:

[NSCharacterSet characterSetWithCharactersInString:@"; ="]];

NSDictionary 字典

NSMutableDictionary可变字典

字典时无序的,对字典排序,应先生称数组,对数组排序

字典对象是由 键—值对象构成的数据集合;同一字典,键必须唯一。 键值对是无序的

1.创 建

NSDictionary *dict1=[NSDictionary dictionaryWithObjectsAndKeys:s1,@“o1”,@“k1”,@“o2”,@“k2”

nil];//值 键

NSDictionary *dict2=@{@“101":s1,@"102":s2,@"103":s3,@"104":s4};//键 值

2.存 取

NSLog(@"%@",[dict2 objectForKey:@“101"]); 得到@“101”所对应的值

NSLog(@"%@", dict2[@“102”]);得到键所对应的值

NSArray *key =[dict2 allKeys]; 得到所有的键

NSLog(@"%@",key);

NSArray *valuis=[dict2 allValues]; 得到所有的键值

NSLog(@“%@",valuis);

3.遍 历

//根据键的数组遍历值(优先选择)

for (NSString * key in dict2) {

NSLog(@"%@ %@",key,dict2[key]);

}

//枚举器

NSEnumerator *keyEnumerator =[dict2 keyEnumerator];

NSEnumerator *key;

while(key=[keyEnumerator nextObject]){

NSLog(@"%@ %@",key ,dict2[key]);

}

4.排 序

NSArray *result= [dict2 keysSortedByValueUsingSelector:@selector(compare:)];

( 根据值的内容重写compare)

NSLog(@"%@",result);

//对值的内容排序,自定义compare函数

5.可变字典

1.创建

NSMutableDictionary *dict2=[NSMutableDictionary dictionaryWithCapacity:0]//有0个键值对的可变字典

NSMutableDictionary *dict =[[NSMutableDictionary alloc]init];

//不能用 NSMutableDictionary *dict=@{@“101":@"tom",@"102":@"jerry"}

2.赋值

[dict2 setDictionary:@{@"101":@"tom",@"102":@"jerry"}];

[dict2 setObject:@"zhabg" forKey:@"103"];// 如果有103这个键那就是修改。没有就初始
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: