Objective-C---3---NSString的常用方法

1. NSString:

OC有自己的字符串類,

常規類的創建:NSString *str = [[NSString alloc] init];

1.1  創建的方法:

        //字符串創建一:
        NSString *p = @"葵花寶典";
        NSLog(@"%@", p);
        
        //字符串創建二:
        NSString *str = [[NSString alloc] initWithString:p];
        NSLog(@"%@", str);
        
        //字符串創建三:
        NSString *str1 = [[NSString alloc] initWithUTF8String:"切記:這個是C的字符串,所以不用加@"];  // 不用加@,因爲這寫的是 const char*
        NSLog(@"%@", str1);
        
        //字符串創建四:
        NSString *str2 = [[NSString alloc] initWithFormat:@"最常用的字符串%c", '0'];
        NSLog(@"%@",str2);
        
        [str1 release];  //  <strong>用一個alloc,就用一個release釋放</strong>
        [str release];
        [str2 release];
1.2  創建臨時字符串:

臨時字符串的創建沒有使用alloc,所以不需要我們手動釋放內存,它會自動釋放

        // 創建臨時字符串1
        NSString *str = @"OC-Hello world";
        
        // 創建臨時字符串2
        NSString *str1 = [NSString stringWithUTF8String:"C語言"];
        NSLog(@"%@", str1);
        
        // 創建臨時字符串3
        NSString *str2 = [NSString stringWithFormat:@"便利構造器的%@  %c", @"方法", 'a'];
        NSLog(@"%@", str2);
        
        // 創建臨時字符串4
        NSString *str3 = [NSString stringWithString:str2];
        NSLog(@"%@", str3);

1.3  initWithFormat和stringWithFormat:

這兩個方法中的第一個參數中的%@,%d,%c....會用你後面寫的相對應的類型的東西替換


1.4  字符串比較大小:

//  比較字符串是否相等
- (BOOL)isEqualToString:(NSString *)aString;-------->比較是否相等  記得返回值是BOOL型


//  比較字符串的大小
- (NSComparisonResult)compare:(NSString *)string;  // 返回值類型是NSComparisonResult  並不是BOOL型

/*  NSComparisonResult型是枚舉類型
typedef NS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
小於-----   -1
等於-----   0
大於-----   1
*/


// 字符串比較
NSString *str1 = @"hdudi";
NSString *str2 = @"hdudi";
if (str1 == str2) {
                NSLog(@"str1 = str2");
            }else {
                NSLog(@"not same");
            }
//  結果是相等,  是因爲這個比較的是字符串常量的地址, str1和str2指向的是同一個字符串,所以地址是一樣的

  
#pragma mark---------1.字符串的方法
        // 字符串比較 
        {
        NSString *str1 = @"hello";
        NSString *str2 = @"helloworld";
        BOOL result = [str1 isEqualToString:str2];
        NSLog(@"%d", result);
        
        NSComparisonResult res = [str1 compare:str2];
        if (res == NSOrderedAscending) {
            NSLog(@"str1 < str2");
        }
        if (res == NSOrderedDescending) {
            NSLog(@"str1 > str2");
        }
        if (res == NSOrderedSame) {
            NSLog(@"str1 = str2");
        }
        }
        

1.5 字符串查找方法:

#pragma mark------------ 字符串查找
        {
            NSString *str3 = @"Nevermid I will find someone like you";
            NSString *subStr3 = @"someone";
            
            NSRange range = [str3 rangeOfString:subStr3];
            NSLog(@"location = %lu, length = %lu", range.location, range.length);

//   NSNotFound --------長整型的最大值
 }

1.6 字符串提取方法:

#pragma mark---------------字符串提取:------三種

            NSString *str4 = @"01234567890";
            
   // 1. To是從頭開始,截取n個長度的字符
            NSString *subStr4 = [str4 substringToIndex:6];
            NSLog(@"%@", subStr4);
            
   // 2. From是從n開始截取,一直到最後
            NSString *subStr5 = [str4 substringFromIndex:5];
            NSLog(@"%@", subStr5);
            
   // 3. Range是從第a個開始截取,截取b個長度的字符:a和b是NSMakeRange的兩個長度
            NSString *subStr6 = [str4 substringWithRange:NSMakeRange(4, 3)];
            NSLog(@"%@", subStr6);



           NSString *str = @"http://www.lanou3g.com";
   // 1.從xx位置開始到最後結束
            NSString *sub1 = [str substringFromIndex:7];
            NSLog(@"%@", sub1);
            
   // 2.從開始位置到xx結束
            NSString *sub2 = [str substringToIndex:7];
            NSLog(@"%@", sub2);
            
   // 3.獲取一個範圍
            NSString *sub3 = [str substringWithRange:NSMakeRange(11, 7)];
            NSLog(@"%@", sub3);
  

1.7 字符串長度及拼接:

#pragma mark------------字符串的長度 
        {
            NSString *str = [NSString stringWithFormat:@"you need cry dear!"];
            NSLog(@"%lu", [str length]);

        }
        
#pragma mark-------------字符串拼接 
        {
            NSString *str = [NSString stringWithFormat:@"you need cry dear!"];
            NSLog(@"%@", [str stringByAppendingString:@"hahahah"]);
            
        }

1.8 字符串替換-----不可變字符串的替換:

#pragma mark-----------用一個字符串替換指定範圍內的一堆字符
            //將lanou3g用baidu替換
            NSString *str = @"http://www.lanou3g.com";
            NSString *s1 = [str stringByReplacingCharactersInRange:NSMakeRange(11, 7) withString:@"baidu"];
            NSLog(@"%@", s1);
            
#pragma mark-----------用字符串替換字符串
            // 將空格去掉
            NSString *str1 = @"sgsh jjj yy";
            NSString *s = [str1 stringByReplacingOccurrencesOfString:@" " withString:@""];
            NSLog(@"%@", s);


1.9 檢測字符串前綴和後綴:

#pragma mark--------檢測字符串前綴(hasPrefix)和後綴(hasSuffix)
        {
            // 判斷前綴:網址是否合法:http://   https://
            NSString *str1 = @"http://www.baidu.com";
            if ([str1 hasPrefix:@"http://"] || [str1 hasPrefix:@"https://"]) {
                NSLog(@"合法");
            }else
                NSLog(@"不合法");
            
            // 判斷後綴:例如圖片後綴:jpg png gif jpeg
            NSString *imgName = @"balabala.jpg";
            if ([imgName hasSuffix:@".jpg"] || [imgName hasSuffix:@".png"] || [imgName hasSuffix:@".gif"] || [imgName hasSuffix:@".jpeg"]) {
                NSLog(@"合法圖片後綴");
            }else
                NSLog(@"不合法");
            
            // 練習:判斷是否爲word文件
            NSString *wordName = @"OC.doc";
            if ([wordName hasSuffix:@".doc"]) {
                NSLog(@"是文件");
            }else
                NSLog(@"不是文件");
        }

1.10 可變字符串:

NSMutableString是NSString的子類,創建動態可變字符串,  NSMutableString繼承NSString的方法:

不可變字符串的方法以string開頭,有返回值,

可變字符串的方法無返回值,對字符串本身進行修改



NSMutableString在使用時最好不要直接賦值(=@“”),因爲這個NSMutableString是可變字符串,他的內容應該都是append進去的

 

#pragma mark----------  可變字符串 NSMutableString 
        {
            // 可變字符串繼承於NSString不可變字符串的方法。
            // NSMutableString 可以使用父類的方法,以下除外:
            // NSMutableString *str = @"不能用";
            
    //  創建:
            NSMutableString  *str = [[NSMutableString alloc] init];
            [str setString:@"hello ya "];
            NSLog(@"%@", str);
            
    // 增加/拼接
            [str appendString:@"friend "];
            NSLog(@"%@", str);
            
            [str appendFormat:@"%d", 87];  // 格式化拼接
            NSLog(@"%@", str);
            
            
     //  插入,按指定的位置:atIndex
            [str insertString:@"Oh " atIndex:0];
            NSLog(@"%@", str);
            
            
     //  刪除 從指定位置開始,按指定的長度刪除
            NSRange range = {3, 5};
            [str deleteCharactersInRange:range];
            NSLog(@"%@",str);
            
            
      //  從指定位置開始,按指定的長度替換,可能會覆蓋你之前的內容,是替換,不是插入
            [str replaceCharactersInRange:NSMakeRange(3, 5) withString:@"HELLO"];
            NSLog(@"%@", str);
            
            [str release];
        }

1.11   例題:

        {
            /*
             給定一個圖片文件名,判斷字符串中是否以“png”結尾,如果是就替換成“jpg”,如果不是,就拼接”.jpg ”。
             */
            
            //  可變字符串
            NSMutableString *str = [[NSMutableString alloc] init];
            [str setString:@"hgfhfjfkf.png"];
            if ([str hasSuffix:@".png"]) {
                [str replaceCharactersInRange:NSMakeRange([str length] - 4, 4) withString:@".jpg"];
                NSLog(@"%@",str);
            }else{
                [str appendString:@".jpg"];
                NSLog(@"%@",str);
            }
            
            
            
            //  不可變字符串
            NSString *str1 = @"hgfhfjfkf.png";
            if ([str1 hasSuffix:@".png"]) {
            
                NSLog(@"%@", [str1 stringByReplacingOccurrencesOfString:@".png" withString:@".jpg"]);
            }else{
                
                NSLog(@"%@", [str1 stringByAppendingString:@".jpg"]);
            }
            
            
        }



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章