NSString 函數整理

來源:互聯網
上載者:User

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    //建立字串
    NSString *height;
    /**類方法:
     +(id) stringWithFormat: (NSString *) format,...
     通過格式字串和參數來建立NSString
     省略符號(。。。):可以接受多個以逗號分割的參數。
     這聲明方法時添加加號(+),那麼這個方法為類方法,不需要建立執行個體就可以調用,通常用於建立心的執行個體,我們稱用來建立新對象的類方法為Factory 方法。
     -------------------
     objective-c運行時產生一個類的時候,它會建立一個代表該類的類對象。類對象包含了指向超類的指標,類名,和指向類方法列表的指標。類對象還包含一個long型資料,為新建立的類執行個體對象指定大小(以位元組為單位)
    
     類方法可以用來訪問全域資料。
    
     執行個體方法要用前置減號(-)來開始聲明
    
     */
    
    height=[NSString stringWithFormat:@"you heigh is %d feet,%d inches",5,11];
    NSLog(height);
    //length 返回字串中字元的個數。-(unsigned int) length;
    if([height length]>5){
        NSLog(@"height length ------");
    }
    
    //字串比較
    /**
     isEqualToString :可以用來比較接收方和當作參數傳遞來的字串的內容是否相同,返回yes和no
     */
    NSString *thing1=@"hello";
    NSString *thing2=[[NSString alloc] initWithString:@"hello"];
    if([thing1 isEqualToString:thing2]){
        NSLog(@"they are same");    
    }
    /**
     ==:只判斷指標數值,而不是它們所指向的內容
     */
    if(thing1==thing2){
        NSLog(@"== same");
    }
    
    /*
     compare:比較兩個字串。區分大小寫
     compare將接收對象和傳遞來的字串逐個字元的進行比較,它返回一個NSComparisonResult(枚舉類型)來顯示結果。
     typedef enum _NSComparisonResult{
     NSOrderedAscending=-1;
     NSOrderedsame;
     NSOrderedDescending;
     } NSComparisonResult;
     */
    [thing1 compare:thing2];
    if(NSOrderedSame==[thing1 compare:thing2]){
        NSLog(@"compare same");    
    }
    
    //compare:options:
    /***
     -(NSComparisonResult) compare:(NSString *) string
     options:(unsinged) mask;
    
     options 是一個位元遮罩,可以使用|添加選項標記
     選項:
     NSCaseInsensitiveSearch:不區分大小寫字元
     NSLiteralSearch:進行完全比較,區分大小寫
     NSNumbericSearch:比較字串的字元個數,而不是字元值
     */
    if([thing1 compare:thing2 options:NSCaseInsensitiveSearch|
         NSNumericSearch]==NSOrderedSame){
        NSLog(@"they match");
    }
    
    /**
     以某個字串開始或結尾
     -(BOOL) hasPrefix:(NSString *) aString;
     -(BOOL) hasSuffix:(NSString *) aString;
     */
    NSString *fileName=@"aabbbcc";
    if([fileName hasPrefix:@"aa"]){
        NSLog(@"begin with aa");
    }
    
    if([fileName hasSuffix:@"cc"]){
        NSLog(@"end with cc");
    }
    
    //NSMutableString 可變字串
    //SString 是不可變的,一旦NSString 被建立了,我們就不能改變它。
    
    //+(id) stringWithCapacity:(unsinged) capacity; capacity:是給NSMutableString的一個建議,字串的大小並不局限於所提供的大小,這個容量僅是個最優值。
    
    NSMutableString *str=[NSMutableString stringWithCapacity:40];
    [str appendFormat:@"sdfsdf%d",5];
    [str appendString:@"ssssssss"];
    NSLog(str);
    
    //刪除字串
    //-(void) deleteCharactersInRange:(NSRange) range;
    
    NSMutableString *ms;
    ms=[NSMutableString stringWithCapacity:50];
    [ms appendString:@"aabbccdd"];
    NSRange range;
    range=[ms rangeOfString:@"cc"];
    [ms deleteCharactersInRange:range];
    NSLog(ms);
    
    //與執行個體方法一樣,繼承對類方法也同樣適用
    
    //------------------集合--------------
    //NSArray ,NSDictionary
    /**
     NSArray 是一個cocoa類,用來儲存物件的有序列表。
    NSArray有兩個限制:1,它只能儲存objective-c的對象,而不能儲存c語言中的基礎資料型別 (Elementary Data Type)如int,float,enum,struct,或者nsarray中的隨機指標。2,不能這nsarray中儲存nil
    
     類方法:
     arrayWithObjects:建立一個新的nsarray。發送一個以逗號分割的對象列表,這列表結尾添加nil代表列表結束,(這就是不能這nsarray中儲存nil的原因)
    
     */
    NSArray *array=[NSArray arrayWithObjects:@"aa",@"bb",@"cc",nil];
    
    //-(unsigned) count; 取得包含對象的個數
    //-(id) objectAtIndex:(unsigned int) index; 取得索引位置的對象
    
    int i;
    for (i=0; i<[array count]; i++) {
        NSLog(@"index %d has %@",i,[array objectAtIndex:i]);
    }
    
    //------------切分數組
    //-componentsSeparatedByString:
    NSString *ns=@"sdf,dsfs,dfd,fdf,df,dd";
    NSArray *comArr=[ns componentsSeparatedByString:@","];
    for(int i=0;i<[comArr count];i++){
        NSLog(@"componentsSeparatedByString===%@",[comArr objectAtIndex:i]);
    }
    
    //componentJoinedByString: 合并nsarray中的元素來建立字串
    NSString *joinedStr=[comArr componentsJoinedByString:@"-->"];
    NSLog(@"joined---= %@",joinedStr);
    
    //可變數組
    NSMutableArray *mutableArr=[NSMutableArray arrayWithCapacity:40];
    [mutableArr addObject:@"aa"];
    [mutableArr addObject:@"bb"];
    [mutableArr addObject:@"cc"];
    [mutableArr addObject:@"dd"];
    
    for(int i=0;i<[mutableArr count];i++){
        NSLog(@"mutableArr==%@",[mutableArr objectAtIndex:i]);
    }
    
    //-----  -(void) removeObjectAtIndex:(unsinged) index; 刪除指定索引的對象,
    //刪除一個對象之後,數組中並沒有留下漏洞,被刪除對象後面的數組元素的哦被前移來填補空缺
    [mutableArr removeObjectAtIndex:2];
    for(int i=0;i<[mutableArr count];i++){
        NSLog(@"removeObjectAtIndex == %@",[mutableArr objectAtIndex:i]);
    }
    
    //枚舉
    //NSEnumerator ,它是cocoa用來描述這種集合迭代運輸的方法
    //-(NSEnumerator *) objectEnumerator;
    NSEnumerator *enumerator=[mutableArr objectEnumerator];
    id thingie;
    while(thingie=[enumerator nextObject]){
        NSLog(@"i found %@",thingie);
    }
    
    //快速枚舉
    for(NSString *string in mutableArr){
        NSLog(@"for in == %@",string);
    }
    
    //NSDictionary 字典
    /*
     NSDictionary 是在給定的關鍵字(通常是一個NSString字串)下儲存一個數值(可以是任何類型的對象)。然後你可以用這個關鍵字來尋找相應的數值。
     NSDictionary 是鍵查詢的最佳化儲存方式。它可以立即找出要查詢的資料,而不需要遍曆整個數組進行尋找。
    
     +(id) dictionaryWithObjectAndKeys:(id) firstObject,....;
     該方法接收對象和關鍵字交替出現的系列,以nil值作為終止符號。
     **/
    NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:@"aaa",@"a",@"bbb",@"b",nil];
    NSString *dicStr=[dic objectForKey:@"a"];
    if([dicStr isEqualToString:@"aaa"]){
        NSLog(@"------------00000000000000000");
    }
    
    //可變字典
    NSMutableDictionary *mutableDic=[NSMutableDictionary dictionaryWithCapacity:50];
    [mutableDic setObject:@"1111" forKey:@"1"];
    [mutableDic setObject:@"222" forKey:@"2"];
    
    //刪除 -(void) removeObjectForKe:(id) key;
    [mutableDic removeObjectForKey:@"2"];
    
    NSArray *keyArr=[mutableDic allKeys];
    for(NSString *str in keyArr){
        NSLog(@"key== %@",str);
        NSLog(@"value== %@",[mutableDic objectForKey:str]);
    }
    
    
    //各種數值,NSNumber NSValue
    /*
     cocoa 提供了NSNumber類來封裝基礎資料型別 (Elementary Data Type)
     +(NSNumber *) numberWithChar:(char) value;
     +(NSNumber *) numberWithInt:(int) value;
     +(NSNumber *) numberWithFloat:(float) value;
     +(NSNumber *) numberWthiBool:(BOOL) value;
    
     -(char) charValue;
     -(int) intVlaue;
     -(float) floatValue;
     -(BOOL) boolValue;
     -(NSString *) stringValue;
    
    
     **/
    NSNumber *number;
    number=[NSNumber numberWithInt:3];
    [mutableDic setObject:number forKey:@"int"];
    
    int num=[[mutableDic objectForKey:@"int"] intValue];
    NSLog(@"int object value== %d",num);
    
    
    //NSValue .NSNumber實際上是NSValue的子類,NSValue可以封裝任意值
    
    /**
     +(NSValue *) valueWithBytes:(const void *) value objCType:(const char *) type;
     傳遞的參數是你想要封裝的數值的地址,通常,得到的是你想要儲存的變數的地址(在c語言裡適用操作符 & ),你也可以提供一個描述這個資料類型的字串,通常用來說明struct中實體的類型和大小。你不用自己寫代碼
     來產生這個字串,@encode編譯器指令可以接受資料類型的名稱並為你產生合適的字串
     */
    NSRect rect= NSMakeRect(1, 2, 30, 40);
    
    NSValue *value;
    value=[NSValue valueWithBytes:&rect    objCType:@encode(NSRect)];
    NSMutableArray *mr=[NSMutableArray arrayWithCapacity:50];
    [mr addObject:value];
    
    //getValue 提取資料
    /**
     -(void) getValue:(void *) value; 要傳遞的是儲存這個數值的變數的地址
     */
    
    /***
    value=[mr objectAtIndex:0];
    
    NSRect r;
    NSLog(@"00000 ===%@",r);
    [value getValue:&r];
    NSLog(@"111== %@",r);
    */
    
    /**
     +(NSValue *) valueWithPoint:(NSPoint) point;
     +(NSValue *) valueWithSize:(NSSize) size;
     +(NSValue *) valueWithRect:(NSRect) rect;
    
    
    
     -(NSPoint) pointValue;
     -(NSSize) sizeValue;
     -(NSRect) rectValue;
    
     */
    
    //NSNull
    /*
     *+(NSNull *) null;
    */
    [mutableDic setObject:[NSNull null] forKey:@"fax"];
    id fax;
    fax=[mutableDic objectForKey:@"fax"];
    if(fax==[NSNull null]){
        NSLog(@"pppppppppppppppppp");
    }
    
    [pool drain];
    return 0;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.