在object-c中,字串的宣告是:
nsstring *astring;
astring並不真正包含乙個字串物件—它是指向記憶體中字串物件的指標。(和c語言中,用指標指向字串的宣告類似);
nsstring *a0 =[[nsstring alloc]initwithformat:@"kevin"];
//方法一
nsstring *a1 =[[nsstring alloc]initwithstring:@"kevin"];
//方法二
nsstring *a2= @"kevin";
//方法三
nsstring
*a3 = [[
nsstring
alloc
]initwithformat
:@"kevin"
]; 區別1:方法一用format進行字串的宣告,方法二用string方法宣告,第三種方法和用string宣告基本一致,但是不初始化記憶體空間,方法一和方法二中,a0和a1使用結束後,需要進行記憶體釋放,但是a2不需要進行記憶體釋放。
區別2:用format初始化的字串,需要初始化一段動態記憶體空間,如:0x6a42a40,而用string宣告的字串,初始化的是常量記憶體區,如:0x46a8,常量記憶體區的位址,只要值相同,占用的位址空間是一致的。所以a1和a2的位址一致,但是a0和a3的位址不一致。
可以使用format,以整型為例,如:
int i = 100;
nsstring
*b = [[
nsstring
alloc
]initwithformat
:@"%d",i
]; //如果是float型,可以用%f
nslog
(@"b =%@"
,[bdescription
]);結果輸出:b =100
用length求字串長度,如:
nslog(@"a1 =%d",a1.length);
結果輸出a1 = 5
注意這裡和c語言的不同,c語言中,字串的結束是以'\0'結束,而oc不是。
nsstring
*a4= @"2012";
nslog(@"c = %@",c);
結果輸出:c = kevin2012
求子字串,有三種方式:
1、substringfromindex:x
//從索引x開始到結束,包含索引x指向的值(索引的理解有點像c語言中陣列的下標)
2、substringtoindex:x
//從開始到索引x之前結束,不包含索引x指向的值
3、substringwithrange
//定義乙個區間,有開始位置和擷取長度
如下:
nsstring *d =[a1 substringfromindex:1];
nsstring *e =[a1 substringtoindex:3];
nslog(@"d = %@,e =%@",d,e);
結果輸出為:d = evin,e = kev
substringwithrange先定義區間,如下:
nsrange r = ;
//從索引2開始,擷取3個長度
nsstring *f = [csubstringwithrange:r];
nslog(@"f = %@",f);
結果輸出為:f = vin
int j =[a4 intvalue];
//如果字串由數字開頭,轉化為起始的數字,否則轉化為0
nslog(@"j = %d",j);
還可以轉化為float,bool型,查文件得知,如果轉化為bool型,returns yes on encountering one of "y", "y","t", "t", or a digit 1-9—the method ignores any trailingcharacters. returns no if the receiver doesn』t begin with a validdecimal text representation of anumber.(由y,y,t,t,1-9開始的字串轉化為yes,其餘的為no)
a0 isequal:(id) //a
和乙個物件進行判斷,比較的是位址
,如果發現傳進來的都是字串,直接比較字串大小,若相等,就返回
yes,如果不是字串,就進行位址比較
a0 isequaltostring:b
//a和字串
b進行比較,比較字串大小
如下:bool c1 = [@"12"isequal:@"12"];
bool c2 = [@"12"isequaltostring:@"12"];
bool c3 = [a0isequaltostring:a1];
nslog(@"c1 = %d,c2 = %d,c3 =%d",c1,c2,c3);
結果輸出為:c1 = 1,c2 = 1,c3 = 0;
使用compare:公升序返回
-1,相等返回
0,降序返回1
如下:nsstring *k1 = @"abc";
nsstring *k2 = @"abc";
nscomparisonresult r1 = [k1compare:k2];
nslog(@"r1 = %d",r1);
結果輸出為r1 = -1
轉化字串大小寫:
lowercasestring:
//轉化成小寫
uppercasestring:
//轉化成大寫
如下:nsstring *k3 = [k1lowercasestring];
nsstring *k4 = [d1uppercasestring];
nslog(@"k3 = %@,k4 =%@",k3,k4);
結果輸出為:k3 = abc,k4 =abc
ios學習筆記之Object C 集合
obejct c中包含了三種集合,分別是 陣列 字典和集 set 陣列和c語言中的陣列相似,但是oc中的陣列只能儲存物件,不能儲存基本資料型別,如int float enum struct等,也不能儲存nil。它也提供了編制好的索引物件,可以通過制定索引找到要檢視的物件。包含可變陣列 nsmutab...
iOS開發 Object C學習之結構體使用
前言 定義 結構體並不是定義乙個變數,而是定義了種資料型別。結構體作用 結構體和其他型別基礎資料型別一樣,例如int型別,char型別 只不過結構體可以做成你想要的資料型別。以方便日後的使用。在實際專案中,結構體是大量存在的。研發人員常使用結構體來封裝一些屬性來組成新的型別。由於c語言內部程式比較簡...
iOS開發 Object C學習之結構體使用
前言 定義結構體並不是定義乙個變數,而是定義了種資料型別。結構體作用 結構體和其他型別基礎資料型別一樣,例如int型別,char型別 只不過結構體可以做成你想要的資料型別。以方便日後的使用。在實際專案中,結構體是大量存在的。研發人員常使用結構體來封裝一些屬性來組成新的型別。由於c語言內部程式比較簡單...