OC 字符串與數組


//
// main.m // oc第四講
 #import <Foundation/Foundation.h> #import "book.h"

int main(int argc, const char * argv[]) { #pragma mark --NSString 字符串---
    
//NSString不可變字符串,即創建之后不能修改(進行一個增 刪 改的操作)(readonly)只讀 //創建一個空的字符串 // NSString *string=[[NSString alloc]init]; // NSLog(@"%@",string); //    
//    //根據給定的常量去創建NSString對象(創建常量區的字符串) // NSString *string1=@"imac"; // NSLog(@"%@",string1); // NSLog(@"%p",string1); //    
//    //創建堆區的字符串 // NSString *string2=[[NSString alloc]initWithFormat:@"iphone"]; //    
// NSLog(@"%@",string2); // NSLog(@"%p",string2); //    
//    
//    //如果創建的字符串中會有其他變量 那么我們就要使用initWithFormat 這種方式去創建 //    //可以將我們一些數值拼接到我們字符串中 // NSInteger num=6; // NSString *string3=[[NSString alloc]initWithFormat:@"iphone%lds",num]; // NSLog(@"%@",string3); //便利構造器方法 // NSString *str1=[NSString string]; // NSString *str2=[NSString stringWithString:@"iphone"]; //    //等同於 // NSString *str3=@"iphone"; //    
// NSLog(@"%@",str2); //    
    
    
    
    //獲取字符串長度 //    
// NSString *str=@"huluwatum"; //   // NSUInteger length=[str length]; // NSLog(@"%lu",[str length]); //    
//    
//    
//    //判斷前綴,返回值為bool類型,所以我們使用%d占位.返回值只有兩種結果 0,1; // BOOL result=[str hasPrefix:@"hu"]; // NSLog(@"%d",result); //    
//    
//    //判斷后綴 // BOOL resu=[str hasSuffix:@"tum"]; // NSLog(@"%d",resu); //字符串截取(獲取字符串); //    //from 打印出從對應的下標開始到最后的字符串 // NSString *str=@"huluwaaotum"; // NSString *substring=[str substringFromIndex:4]; // NSLog(@"%@",substring); //    
//    
// NSString *substring1=[str substringFromIndex:6]; // NSLog(@"%@",substring1); //
//    //to 打印出到指定下標之前(不包括當時下標)的字符串 // NSString *subs=[str substringToIndex:4]; // NSLog(@"%@",subs); //    
//    //NSRange:他是一個結構體 他有兩個參數:location(位置),lenght(長度) //    
//    
//    
//    //從下標為2的字符串截取,截取的長度是3個字符 // NSRange range={2,3}; //    
// NSString *substr=[str substringWithRange:range]; //    
// NSLog(@"%@",substr); //    
    
    
    
    //拼接字符串, //1.並沒有改變原有的字符串,只是將拼接好的字符串作為了返回值用新的字符串去接收. // NSString *str=@"iphone"; // NSString *str1=@"6s"; //    //這里是將str1這個字符串拼接到str這個字符串之后,形成了新的字符串 // NSString *newstr=[str stringByAppendingString:str1]; // NSLog(@"%@",newstr); //    
//    //2.stringByAppendingFormat如果后邊拼接 有兩個字符串並沒有使用占位符的話,系統會默認值拼接第一個字符串,如果使用占位符的話,那么會將占位符當中的字符串進行拼接. // NSString *newstr2=[str stringByAppendingFormat:str1,str]; // NSLog(@"%@",newstr2); //    
//    
// NSString *newstr1=[str stringByAppendingFormat:@"%@,%@",str1,str]; //    
// NSLog(@"%@",newstr1); //    
    
    
    //替換: //    //將我們第一個中的字符串替換成為第二個參數中的字符串 // NSString *str=@"huluwaxiaojingang"; // NSString *newstr=[str stringByReplacingOccurrencesOfString:@"hul" withString:@"HUL"]; // NSLog(@"%@",newstr); //    
//    
//    
//    //字符串比較 // NSString *str3=[[NSString alloc]initWithFormat:@"huluwa"]; // NSString *str4=[[NSString alloc]initWithFormat:@"jinggang"]; //    
//    //方法是 isEqualToString//比較的是兩個字符串當中的內容 // if ([str3 isEqualToString: str4]) { // NSLog(@"字符串相等"); // }else{ // NSLog(@"字符串不相等"); //    
// } //    
//    // == 雙等於號 比較是兩個字符串的地址,如果地址一樣,說明內容一樣 //    
//    
// if (str3==str4) { // NSLog(@"字符串相等"); // }else{ // NSLog(@"字符串不相等"); //        
// } //    
//    
//    
//    
//    //大小寫轉換 //    //將字符串轉化為大寫 // NSString *string=@"ios"; // NSString *newstring=[string uppercaseString]; // NSLog(@"%@",newstring); //    //轉換為小寫 // NSString *newstring1=[string lowercaseString]; // NSLog(@"%@",newstring1); //    
//    //首字母大寫 // NSString *newstring2=[string capitalizedString]; // NSLog(@"%@",newstring2); //給定一個圖片,判斷字符串中是否以 png 結尾,如果是就替換城 jpg,如果不是就拼接 .jpg // NSString *string=@"123.jtg"; //    
// BOOL str=[string hasSuffix:@"png"]; //    
//    
// if (str) { // string=[string stringByReplacingOccurrencesOfString:@"png" withString:@"jpg"]; // }else { //    
// string=[string stringByAppendingString:@".jpg"]; //    
// } // NSLog(@"%@",string);
    
    
   
#pragma mark --可變字符串NSMutablestring--
    
    //可變字符串 // NSMutableString是NSString的子類 //    //首先創建一個可變字符串 // NSMutableString *nutablestr=[NSMutableString stringWithString:@"12344"]; // NSLog(@"%@",nutablestr); //    
//   //拼接: //    
// NSString *string123=[NSString stringWithFormat:@"asdfg"]; //    
    //[nutablestr appendString:@"asdfg"]; // [nutablestr appendFormat:@"%@",string123]; // NSLog(@"%@",nutablestr); //    
      //插入 //    //講一個字符串插入到指定下標位置 // [nutablestr insertString:@"abc" atIndex:3]; // NSLog(@"%@",nutablestr); //
//    
//    //刪除 //    //NSRange // NSRange delrange={2,4}; //    //從下標為2的位置開始刪除長度為4的字符串 // [nutablestr deleteCharactersInRange:delrange]; // NSLog(@"%@",nutablestr); //    

    
    
    /* 不可變字符串的修改操作本質上就是得到一個新的字符串 不可變字符串的修改方法以string開頭,有返回值 可變字符串的修改方法沒有返回值,他修改的是原字符串, //使用 nsmutablestring給定一個圖片,判斷字符串中是否以 png 結尾,如果是就替換城 jpg,如果不是就拼接 .jpg */
// NSMutableString *string=[NSMutableString stringWithFormat:@"12345.jpg"]; //    //判斷 // if ([string hasSuffix:@"png"]) { //        //可變字符串替換 //rangeOfString 這個方法就是返回我們png 在當前字符串中所在的位置 // NSRange range=[string rangeOfString:@"png"]; //    //替換 // [string replaceCharactersInRange:range withString:@"jpg"]; //    
// }else{ //    
//    //拼接 // [string appendString:@".jpg"]; //        
//    
// } // NSLog(@"%@",string);
    
#pragma mark -- 數組對象NSArray--
    //數組對象 //不可變數組 //    //arrayWithObjects便利構造器的方法,創建了一個不可變數組對象,結尾nil表示的是結束 // NSArray *array=[NSArray arrayWithObjects:@"a",@"b",@"c",@"d", nil]; // NSLog(@"array=%@",array); //    
//    //獲取數組當中元素個數 //    //count // NSLog(@"array=%ld",[array count]); //    
//    //獲取數組當中某一個位置(下標)上的值 // NSLog(@"index=%@",[array objectAtIndex:1]); //    
//    
//    //可變數組 //    
// NSMutableArray *muarray=[NSMutableArray arrayWithCapacity:0]; //    
//    //給可變數組添加元素 //    //將上邊array(不可變數組)添加到可變數組muarray中; //    
// [muarray addObjectsFromArray:array]; // NSLog(@"muarray=%@",muarray); //    
//    //插入 //    
//    
//    //將我們對象插入到指定下標的位置當中 //    
// [muarray insertObject:@"2" atIndex:2]; // NSLog(@"muarray=%@",muarray); //    
//    
//    //刪除 //    //刪除指定下表的元素 // [muarray removeObjectAtIndex:1]; // NSLog(@"muarray=%@",muarray); //刪除數組當中所有元素 //[muarray removeAllObjects]; // NSLog(@"%@",muarray); //遍歷數組元素 //for (這里放的是我們要遍歷數組當中元素的類型 in 這里放的是遍歷的數組) { // } //    
// for (NSString *str in muarray) { // NSLog(@"%@",str); // } //圖書管理 //1.使用可變數組管理所有書籍(定義 book類,包含書名,價格) //2.數組可以添加刪除書籍 //3.可以從數組根據書名查找書籍且修改書籍價格 //4展示所有書籍清單 // book *b=[[book alloc]initWithName:@"如來神掌" price:10]; // book *b1=[[book alloc]initWithName:@"到爆天" price:20]; // book *b2=[[book alloc]initWithName:@"葵花寶典" price:2]; // book *b3=[[book alloc]initWithName:@"九陰真經" price:66]; //    
//    //創建一個可變數組 //    
// NSMutableArray *array=[NSMutableArray arrayWithObjects:b,b1,b2,b3, nil]; //    
//// for (NSString *str in array) { //// NSLog(@"%@",str); //// }
//    
//    
//    //添加 //    
// book *b5=[[book alloc]initWithName:@"悲傷牛" price:88]; //    //往可變數組當中添加新的書籍(對象) // [array addObject:b5]; //    //遍歷 // for (NSString *str in array) { // NSLog(@"%@",str); // } //    
//    //刪除 // [array removeObject:b1]; // for (book *b in array) { // NSLog(@"%@,%.2f",b.name,b.price); // } //    
//    
// for (book *b in array) { // if ([[b name]isEqualToString:@"如來神掌"]) { // [b setPrice:200]; //            
// } // NSLog(@"%@,%.2f",b.name,b.price); // }
    
    
#pragma mark-- 值對象--
   // NSNumber //創建一個NSNumber對象 //將我們基本數據類型轉換成對象(值對象) // numberWithInt將int類型轉換成NSNumber類型 //    
// NSNumber *num=[NSNumber numberWithInt:10]; // NSLog(@"%@",num); //    
//    //intvalue:將我們值對象轉化為基本數據類型 // NSLog(@"num=%d",[num intValue]); //    
#pragma mark --  NSValue---
//    
//    //NSValue 數值類,可以將指針或結構體轉化成對象 //    
// int a=10; // int *p=&a; //    //將指針類型轉化成對象類型 // NSValue *value=[NSValue valueWithPointer:p]; // NSLog(@"%@",value); //    //將對象類型轉化成指針類型 // int *newp=[value pointerValue]; // NSLog(@"%d",*newp); //NSRange // NSRange range={13,15}; //    //將 NSRange轉換成nsvalue對象 // NSValue *rangevalue=[NSValue valueWithRange:range]; // NSLog(@"%@",rangevalue); //    
//    //將nsvalue 轉化成nsrange // NSRange newrange={0}; // newrange=[rangevalue rangeValue]; // NSLog(@"%lu,%lu",newrange.location,newrange.length);
    
    /* 比較 compare: */
    //使用語法糖創建NSNunber // NSArray *array=@[@1,@2,@3,@4];
    NSNumber *num1=@100; NSNumber *num2=@100; //NSComparisonResult//枚舉類型
 NSComparisonResult result=[num1 compare:num2]; NSLog(@"%ld",result); switch (result) { case NSOrderedAscending://-1
            NSLog(@"前小后大"); break; case NSOrderedDescending://1
            NSLog(@"前大后小"); break; case NSOrderedSame://0
            NSLog(@"前后相等"); break; default: break; } return 0; }

 

 

 

// book.h
 #import <Foundation/Foundation.h> @interface book : NSObject { NSString *_name;//書名
    CGFloat _price;//價格
 } -(void)setName:(NSString *)name; -(NSString *)name; -(void)setPrice:(CGFloat)price; -(CGFloat)price; -(instancetype)initWithName:(NSString *)name price:(CGFloat)price; +(instancetype)bookWithName:(NSString *)name price:(CGFloat)price; @end
//
// book.m
 #import "book.h" @implementation book -(void)setName:(NSString *)name{ _name=name; } -(NSString *)name{ return _name; } -(void)setPrice:(CGFloat)price{ _price=price; } -(CGFloat)price{ return _price; } -(instancetype)initWithName:(NSString *)name price:(CGFloat)price{ self=[super init]; if (self) { _name=name; _price=price; } return self; } +(instancetype)bookWithName:(NSString *)name price:(CGFloat)price{ book *b=[[book alloc]initWithName:name price:price]; return b; } @end

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM