字符串是程序設計最常用的數據類型之一了。在Mac/iPhone編程中,蘋果爲我們提供了一個不同的字符串類型NSString。有別與普通的String爲數據類型,NSString其實是一個對象類型。NSString是NSObject(Cocoa Foundation的基礎對象)的子類,所以具有NSObject的所有特性,好的和好的… ….
小常識: NS是Cocoa類對象類型的前綴,來源於史蒂夫-喬布斯被蘋果開除那段時間建立的公司NeXT. @是Cocoa元素的前綴,很多地方我們會看到,比如接下來...
1, 創建一個NSString對象
簡單方法:
NSString *aString = @"我是個NS字符串!"; //除了引號外加@, 沒別的區別不需要操心內存管理
NSString *aString = [[NSString alloc] initWithFormat:@"這也是個NS字符串!"];//要去retain和release這個字符串,系統不管。
*initWithFormat是其中一個初始化方法,常用的還有
//從一個文件讀取需要的內容 - (id)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error //從一個地址讀取需要的內容 - (id)initWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error
*以上方法得到的NSString的retain值爲1,所以記得release掉阿~~
2,使用一個NSString對象
NSString *aString = @"This is a NSString"; NSLog(aString); //在控制檯輸出信息,該函數方法需要一個NSString對象作爲參數 NSLog("這樣不會好使的"); NSLog(@"這樣就會好使拉~");
再比如設置一個UIView的標題:
[UIView setTitle:aString]; [UIView setTitle:@"標題"]; UIView.title = aString;
3,釋放NSString
[aString release]; //對象將被系統釋放掉咯
*記得不要釋放直接用 = @”xxx” 的NSString對象喲,系統會管的~
4,快速使用一個NSString
NSLog([NSString stringWithFormat:@"一個NS字符串"]);
//這種快速方法返回的是一個retain爲1,autorelease的對象,不需要操心它的內存管理
5,常用方法
nString = [aString substringToIndex:4]; //nString將得到aString中的前四個字符
佔位符:
%c 一個單一的字符
%d 一個十進制整數
%i 一個整數
%e, %f, %g 一個浮點數
%o 一個八進制數
%s 一個字符串
%x 一個十六進制數
%p 一個指針
%n 一個等於讀取字符數量的整數
%u 一個無符號整數
%[] 一個字符集
%% 一個精度符號
//格式化字符串:佔位符(由一個%加一個字符組成)
如:
int textCount=textField.text.length; //創建一個整型變量textCount,用於獲取輸入文本框的文字長度
NSString *astring = [NSString stringWithFormat:@"你輸入的字符串長度是:%d“,textCount];//創建一個字符變量astring ,取得文字數據類型,把整數轉換爲文字數據
label1.text=astring ; //標籤顯示字符變量astring的數據內容
textField.text=NULL; //將文本框中輸入的文字清空
如:
int i = 1;
int j = 2;
NSString *astring = [[NSString alloc]initWithString:[NSString stringWithFormat:@"%d.This is %i string!",i,j]];
NSLog(@"astring:%@",astring);
[astring release];
字符串轉換
1、字符串與數值互相轉換
//字符串轉換爲數值
NSString *aNumberString = @"123";
int i = [aNumberString intValue];
//數值轉換爲字符串
int aNumber = 123;
NSString *aString = [NSString stringWithFormat:@"%d", aNumber];
2、字符串與日期相互轉換
//字符串轉換爲日期
NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init]; //實例化一個NSDateFormatter對象
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //設定時間格式,這裏可以設置成自己需要的格式
NSDate *date =[dateFormat dateFromString:@"1980-01-01 00:00:01"];
//日期轉換爲字符串
NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init]; //實例化一個NSDateFormatter對象
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //設定時間格式,這裏可以設置成自己需要的格式
NSString *currentDateStr = [dateFormatter stringFromDate:[NSDate date]];
常用字符串操作
1、獲得字符串長度
NSString* str1=@"MAC OS Pro";
NSLog(@"長度是 %d",[str1 length]);
2、兩個字符串連接
NSString* str2=@"MAC OS Pro";
NSString* str3=@" Leopard";
NSString* str4=[str2 stringByAppendingString:str3];
NSLog(str4,nil);
NSString* str5=[str2 stringByAppendingFormat:@" %d",10];
NSLog(str5,nil);
3、插入字符串
NSMutableString* string1=[NSMutableString stringWithFormat:@"Mac X"];
[string1 insertString:@"OS " atIndex:4];
NSLog(string1,nil);
4、刪除字符串
NSMutableString* string2=[NSMutableString stringWithFormat:@"刪除字符串"];
[string2 deleteCharactersInRange:NSMakeRange(0, 2)];
NSLog(string2,nil);
5、抽取部分字符串
NSString* string6=@"This is Mac OS X";
NSString *nstr1,*nstr2,*nstr3;
//從開頭抽取字符串
nstr1=[string6 substringToIndex:4];
NSLog(nstr1,nil);
//抽取末位位置的字符串
nstr2=[string6 substringFromIndex:8];
NSLog(nstr2,nil);
//抽取指定範圍的字符串
nstr3=[string6 substringWithRange:NSMakeRange(5,2)];
NSLog(nstr3,nil);
6、從文件讀取字串:initWithContentsOfFile方法
NSString *path = @"astring.text";
NSString *astring = [[NSString alloc] initWithContentsOfFile:path];
NSLog(@"astring:%@",astring);
[astring release];
7、抽取子串
-substringToIndex: 從字符串的開頭一直截取到指定的位置,但不包括該位置的字符
NSString *string1 = @"This is a string";
NSString *string2 = [string1 substringToIndex:3];
NSLog(@"string2:%@",string2);
-substringFromIndex: 以指定位置開始(包括指定位置的字符),幷包括之後的全部字符
NSString *string1 = @"This is a string";
NSString *string2 = [string1 substringFromIndex:3];
NSLog(@"string2:%@",string2);
-substringWithRange: //按照所給出的位置,長度,任意地從字符串中截取子串
NSString *string1 = @"This is a string";
NSString *string2 = [string1 substringWithRange:NSMakeRange(0, 4)];
NSLog(@"string2:%@",string2);
const char *fieldValue = [value cStringUsingEncoding:NSUTF8StringEncoding];
const char *fieldValue = [value UTF8String];
8、NSString 轉 NSData
NSString* str= @"kilonet";
NSData* data=[str dataUsingEncoding:NSUTF8StringEncoding];
Date format用法:
-(NSString *) getDay:(NSDate *) d
{
NSString *s ;
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"YYYY/MM/dd hh:mm:ss"];
s = [format stringFromDate:d];
[format release];
return s;
}
9、計算字符串長度:
CGFloat w = [title sizeWithFont:[UIFont fontWithName:@"Arial" size:18]].width;