Objective-C: 字串NSString與NSMutableString

來源:互聯網
上載者:User

標籤:

    字串算是OC中非常重要和常用的一部分內容,OC中的字串與我之前在學習C,C++,Java中的字串有一定的不同,它非常類似於C++中容器的概念,但用法卻與之還是有很大的不同,也許是因為OC的文法就與其他我們常用的程式設計語言不盡相同。   這裡總結一下字串NSString與NSMutableString。

一. NSString

      NSString代表字元序列不可變的字串,NSString的功能非常強大,OC的字串處理比C語言的餓字串簡單、易用得多。

      這裡我們通過一個具體的例子來進行分析。

      建立兩個字串對象: 

NSString *str1 = @"this is string A";NSString *str2 = @"this is string B";

      計算字串中的字元個數

NSLog(@"Length of str1 : %lu" , [str1 length]);

     利用stringWithString 將一個字串複製到另一個字串:

res = [NSString stringWithString : str1];
res = [str1 copy];
NSLog(@"copy : %@" , res);

     stringByAppendingString,將一個字串複製到另一個字串的末尾:

str2 = [str1 stringByAppendingString:str2];

      isEqualToNumber : 方法比較兩個NSNumber對象的數值。程式會返回一個BOOL值,查看這兩個值是否相等。

      isEqualToString,判斷兩個字串是否相等:

if([str1 isEqualToString: res] == YES)            NSLog(@"str1 == res");else            NSLog(@"str1 != res");

     compare : 方法測試一個值是否在數值上小於、等於或大於另一個值。
      如: [intNumber compare : myNumber]
      若intNumber 小於 myNumber ,返回NSOrderedAscending ;
                           相等                    ,返回NSOrderdSame;
                           大於                    ,返回NSOrderdDescending

       //驗證一個字串是否小於、等於或大於另一個字串        compareResult = [str1 compare: str2];                if(compareResult == NSOrderedAscending)            NSLog(@"str1 < str2");        else if(compareResult == NSOrderedSame)            NSLog(@"str1 == str2");        else            NSLog(@"str1 > str2");

        uppercaseString,將字串轉換為大寫。

        lowercaseString,將字串轉換為小寫。

        //將字串轉換為大寫        res = [str1 uppercaseString];                //將字串轉換為小寫        res = [str1 lowercaseString];       

     

  stringByAppendingString,在字串後面添加固定的字串:

str = [str stringByAppendingString:@", iOS!"];

       substringToIndex,擷取str的前10個字元組成的字串:

substringToIndex:方法建立了一個子字串,包括首字元都指定的索引數,但不包括這個字元。因為索引數是從0開始的,所以參數3表示從字串中提取0、1、2,並返回結果字串對象。對於所有採用索引數作為參數的字串方法,如果提供的索引數對該字串無效,就會獲得Range or index out of bounds的出錯資訊。

        //擷取str的前10個字元組成的字串        NSString *s1 = [str substringToIndex:10];        NSLog(@"%@" , s1);

      substringFromIndex,擷取str從第5個字元開始,與後面字元組成的字串:

        //擷取str從第5個字元開始,與後面字元組成的字串        NSString *s2 = [str substringFromIndex:5];        NSLog(@"%@" , s2);

      擷取str從第5個字元開始,到第15個字元組成的字串:

        //擷取str從第5個字元開始,到第15個字元組成的字串        NSString *s3 = [str substringWithRange:NSMakeRange(5, 15)];        NSLog(@"%@" , s3);

      rangeOfString , 擷取ios在str中出現的位置:

        //擷取iOS在str中出現的位置        NSRange pos = [str rangeOfString:@"iOS"];        NSLog(@"ios在str中出現的開始位置:%ld , 長度為:%ld" , pos.location , pos.length);

 

二. NSMutableString

      NSMutableString對象代表一個字元序列可變的字串,而且NSMutableString是NSString的子類,因此前面介紹的NSString所包含的方法,NSMutableString都可以直接使用,NSMutableString對象也可直接當成NSString對象使用。

      stringWithString,用不可變字串建立可變字串:

        //從不可變字串建立可變字串        mstr = [NSMutableString stringWithString:str1];        NSLog(@"%@" , mstr);

       insertString,插入字元:

        //插入字元        [mstr insertString:@"mutable" atIndex:7];        NSLog(@"%@" , mstr);

      insertString:  atIndex:   ,插入末尾進行有效拼接:

        //插入末尾進行有效拼接        [mstr insertString:@" and string B" atIndex:[mstr length]];        NSLog(@"%@" , mstr);

      deleteCharactersInRange:NSMakeRange() , 根據範圍刪除子字串:

        //根據範圍刪除子字串        [mstr deleteCharactersInRange: NSMakeRange(16, 13)];        NSLog(@"%@" , mstr);

      尋找然後直接刪除

        //尋找然後將其刪除        substr = [mstr rangeOfString:@"string B and "];                if(substr.location != NSNotFound){            [mstr deleteCharactersInRange:substr];            NSLog(@"%@" , mstr);        }

 範例程式碼如下:

 1 #import <Foundation/Foundation.h> 2  3 int main(int argc, const char * argv[]) 4 { 5  6     @autoreleasepool { 7          8         // insert code here... 9         //NSLog(@"Hello, World!");10         11         NSString *str1 = @"this is string A";12         NSString *search , *replace;13         NSMutableString *mstr;14         NSRange substr;15         16         //從不可變字串建立可變字串17         mstr = [NSMutableString stringWithString:str1];18         NSLog(@"%@" , mstr);19         20         //插入字元21         [mstr insertString:@"mutable" atIndex:7];22         NSLog(@"%@" , mstr);23         24         //插入末尾進行有效拼接25         [mstr insertString:@" and string B" atIndex:[mstr length]];26         NSLog(@"%@" , mstr);27 28         29         //直接使用appendString30         [mstr appendString:@" and string C"];31         NSLog(@"%@" , mstr);32         33         //根據範圍刪除子字串34         [mstr deleteCharactersInRange: NSMakeRange(16, 13)];35         NSLog(@"%@" , mstr);36         37         //尋找然後將其刪除38         substr = [mstr rangeOfString:@"string B and "];39         40         if(substr.location != NSNotFound){41             [mstr deleteCharactersInRange:substr];42             NSLog(@"%@" , mstr);43         }44         45         46         //直接設定為可變的字串47         [mstr setString:@"this is string A"];48         NSLog(@"%@" , mstr);49         50         //替換一些字元51         [mstr replaceCharactersInRange:NSMakeRange(8, 6) withString:@" a mutable string"];52         NSLog(@"%@" , mstr);53         54         //尋找和替換55         search = @"this is";56         replace = @"an example of";57         58         substr = [mstr rangeOfString:search];59         60         if(substr.location != NSNotFound){61             [mstr replaceCharactersInRange:substr withString:replace];62             NSLog(@"%@" , mstr);63         }64         65         //尋找和替換所有的匹配項66         search = @"a";67         replace = @"X";68         69         substr = [mstr rangeOfString:search];70         71         while (substr.location != NSNotFound) {72             [mstr replaceCharactersInRange:substr withString:replace];73             74         }75         76         NSLog(@"%@" , mstr);77         78     }79     return 0;80 }

Objective-C: 字串NSString與NSMutableString

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.