Foundation 之 NSString和NSMutableString


NSString字符串


OC兼容C語言的字符串(OC兼容所有的C語法)
      char * p = "hello world";
      NSLog(@"%s", p);

OC特有字符串類NSString

四種創建OC字符串對象的方法


直接創建

      NSString * str = @"hello world";
      NSLog(@"%@", str);

用一個字符串創建另一個字符串
      NSString * str2 = [[NSString alloc] initWithString:str];  // str是字符串對象的地址
      或者 NSString * str2 = [[NSString alloc] initWithString:@"hello world"];  // @"hello world"是字符串對象地址

用一個C語言的字符串創建OC的字符串對象
      NSString * str3 = [[NSString alloc] initWithUTF8String:p];  // p是C語言字符串的首字符地址
      或者 NSString * str3 = [[NSString alloc] initWithUTF8String:"hello world"];

使用格式符創建OC的字符串對象
      NSString * str4 = [[NSString alloc] initWithFormat:@"hello %d %c", 5, 'A'];  // 打印出 hello 5 A

三種創建臨時字符串的方法


將C的字符串轉換成OC的字符串的對象

      NSString * str1 = [NSString stringWithUTF8String: "hello world"]; 

使用格式符創建臨時字符串

      NSString * str2 = [NSString stringWithFormat: @"%d %@ %c", 1, @"hello", 'R']; 

使用一個字符串創建另一個臨時字符串

      NSString * str3 = [NSString stringWithString: str]; 


      臨時字符串自動釋放,很難確認具體什麼時候會釋放,所以稱爲臨時字符串

      注意:字符串不可變不可修改。

NSString的成員函數


作爲一個對象,它可以發送消息,它可以被髮送消息,並且對象自帶很多消息,也就是很多的成員方法。


獲取字符串的長度
      NSInteger sizeOfString = [@"hello world" length];
大小寫轉換
      NSString * originalString = @"This is An EXAMPLE";
      // "THIS IS AN EXAMPLE"
      NSString * uppercaseString = [originalString uppercaseString];
      // "this is an example"
      NSString * lowercaseString = [originalString lowercaseString];
      // "This Is An Example"
      NSString * capitalizedString = [originalString capitalizedString];
判斷字符串是否相等
      BOOL ret = [str1 isEqualToString:str2];  // 判斷字符串是否相等,並返回結果
         如果使用“==”判斷,只是判斷兩個變量的指針是否相同,即檢查這兩個變量是否指向內存中的同一位置。
比較字符串

      NSComparisonResult ret = [str1 compare:str2];  

         // 比較函數,返回值是枚舉(-1,0,1分別代表小於,等於,大於)

查找子字符串
      NSString * str = @"I am a so bad man.";
      NSString * subStr = @"so";

      NSRange range = [str rangeOfString:subStr];  

            // NSRange是一個C語言結構體,內有兩個整數location和length,子串的位置下標和長度。

      if(range.location == NSNotFound) {
            // 其字符串沒有找到
      } else {
            NSLog(@"%d, %d", range.location, range.length);
      }
      另外,也可以忽略大小寫的查找子字符串
      NSRange range = [str rangeOfString:subStr options:NSCaseInsensitiveSearch];
截取字符串

      NSString * subStr = [str substringToIndex:6];  

         // 從str中提取從頭至下標爲6的字符串(不包括6),生成新字符串,返回字符串地址。

      NSString * subStr = [str substringFromIndex:6];  

         // 從str中提取從下標爲6的字符串(包括6)到最後一個字符,生成新字符串,返回字符串地址。

      NSRange range = {3, 4};  

         // 第一個表示location,第二個表示length。從下標爲3開始提取4個字符。

      NSString * subStr = [str substringWithRange:range];  

         // 從str中提取從下標爲3開始提取4個字符,生成新字符串,返回字符串地址。

      直接使用range,

            [str substringWithRange:NSMakeRange(3, 4)]; 其中NSMakeRange的返回值就是一個NSRange。


NSMutableString可變字符串


可變字符串(子類)繼承於字符串(父類),所以字符串類的方法都可以使用。

可變字符串的初始化及增刪改方法


初始化

      NSMutableString * str = [[NSMutableString alloc] init];

設置字符串
      [str setString:@"hello"];  // 可以隨時setString.
追加字符串
      [str appendString:@" world"];  // 追加字符串。
追加格式符
      [str appendFormat:@"%c", '!'];  // 追加各種格式類型。
插入字符串
      [str insertString:@"XXXX" atIndex:4];  // 插入XXXX到下標4後。
刪除字符串一部分
      [str deleteCharactersInRange:NSMakeRange(3, 5)];  // 刪除字符串中從下標3開始的後面的5個字符。
修改字符串一部分

      [str replaceCharactersInRange:NSMakeRange(3, 2) withString:@"TTTTTTTTTT"];  

         // 將字符串中下標從3開始的2個字符替換爲TTTTTTTTTT。


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