歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Objective-C語法之字符串NSString

Objective-C語法之字符串NSString

日期:2017/3/1 10:19:47   编辑:Linux編程

Objective-C裡核心的處理字符串的類就是NSString和NSMutableString這兩個類,這兩個類完成了Objective-C中字符串大部分功能的處理。這兩個類的最主要的區別是NSString創建賦值後不能動態修改長度和內容,除非給重新賦值。而NSMutableString類似與鏈表的,在創建賦值後可以進行修改長度,插入,刪除等操作。

NSString提供了許多創建和初始化新字符串的方法。下面這個是創建常量字符串的。 它是編譯到可執行文件中的NSString的實例,它不會在內存中消失。例子:

1、創建常量字符串。

NSString *astring = @"我是字符串";

2、NSString的內存地址

當我們聲明一個字符串時,NSString *aString;
變量aString並不是真正包含一個字符串對象,它是指向內存中字符串對象的指針,我們稱之為對象標識符,因為它是表示內存中的一個對象而不是保存這個對象,指針是一個內存位置的地址,下面考慮用“==”來比較字符串,來看個例子
NSString string1 = @"我是甲一號";
NSString *string2 = @"我是甲一號";
BOOL result = string1==string2;
這個result的值是NO,這裡你對比的是內存地址,string1和string2是兩個靜態的對象,在內存中存儲的地址是不同的,所以就是NO了。
如果這樣做
NSString *string1 = @"我是甲一號";
NSString *string2 = string1;
BOOL result = string1==string2;

這時候result的值就是YES了

看個例子就明白了。下面是字符串內存地址的例子

  1. //內存指向
  2. NSString *bstring = @"我是字符串";
  3. NSString *astring = [[NSString alloc] init];
  4. NSLog(@"astring point address:0x%.8x", astring);
  5. NSLog(@"bstring point address:0x%.8x", bstring);
  6. astring=@"我是字符串";
  7. NSLog(@"重新賦值之後的astring point address:0x%.8x", astring);
  8. NSLog(@"astring:%@",astring);
打印結果如下:
  1. 2012-06-14 11:35:31.226 NSString[2316:f803] astring point address:0x00b72a7c
  2. 2012-06-14 11:35:31.227 NSString[2316:f803] bstring point address:0x000045bc
  3. 2012-06-14 11:35:31.227 NSString[2316:f803] 重新賦值之後的astring point address:0x000045bc
  4. 2012-06-14 11:35:31.227 NSString[2316:f803] astring:我是字符串

重新賦值後,astring 的地址和bstring地址一樣了。

3、NSString字符串的比較

在NSString中,最直接的就是用isEqualTostring這個方法

  1. NSString* string1 = @"我是甲一號";
  2. NSString *string2 = @"我是甲一號";
  3. BOOL result = [string1 isEqualToString:string2];
  4. if (result) {
  5. NSLog(@"字符串相同");
  6. }
打印結果:
  1. 2012-06-14 11:49:10.442 NSString[2481:f803] 字符串相同

另外一個比較的方法:compare,他可以比較字符串的大小,它的返回類型是:NSOrderedAscending,NSorderedSame,NSorderedDescending(分別等於整數-1,0,1)。

  1. NSString* string1 = @"我是甲一號";
  2. NSString *string2 = @"我是甲一號";
  3. BOOL result = [string1 compare:string2];
  4. if (result == NSOrderedSame) {
  5. NSLog(@"字符串相同");
  6. }
Copyright © Linux教程網 All Rights Reserved