oc常用字符串方法,数组方法,字典方法整理大全
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(@"%@
%@",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這個鍵那就是修改。沒有就初始
總結
以上是生活随笔為你收集整理的oc常用字符串方法,数组方法,字典方法整理大全的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20135220谈愈敏Linux Boo
- 下一篇: 龙族幻想院长是坏人么 龙族小说在线全文阅