要把 “2011-11-29” 改寫成 “2011/11/29”一開始想用ios的時間格式,後來用NSString的方法搞定。
1.建立NSString字元串
NSString 與 char* 最大的差別就是 NSString是一個objective對象,而char* 是一個位元組數組。@+"字元串 " 這個符号為objective-c NSString 字元串常量的标準用法,char* 建立的時候 無需添加@
- (void)viewDidLoad
[super viewDidLoad];
//經典的字元串指派
NSString *str0 = @"my name is justcoding !";
//字元串格式化合并分别包括
//NSString*類型 int類型 char*類型
NSString *str1 = [NSString stringWithFormat:@"我的名字:%@ 我的年齡:%d 我的郵箱:%s",@"justcoding", 25,"[email protected]"];
//字元串指派 參數中隻可以寫一個字元串 和第一種很像
NSString *str2 = [NSString stringWithString:@"我是字元串"];
//字元串轉換為utf-8格式 參數為char*類型
NSString *str3 = [NSString stringWithUTF8String:"字元串轉換utf-8格式"];
//字元串合并
int i = 100;
char*c = "xuanyusong";
NSString *temp = @"我是臨時字元串";
//在字元串temp的基礎繼續添加 int i 與 char* c 組成一個新的字元串
NSString *str4 = [temp stringByAppendingFormat:@"整型: %d 字元型 :%s",i,c];
//在字元串temp的基礎繼續添加temp 并組成一個新的字元串
NSString *str5 = [temp stringByAppendingString:temp];
//字元串輸出
NSLog(@"str0 = %@", str0);
NSLog(@"str1 = %@", str1);
NSLog(@"str2 = %@", str2);
NSLog(@"str3 = %@", str3);
NSLog(@"str4 = %@", str4);
NSLog(@"str5 = %@", str5);
2.字元串的周遊
每一個字元串其實是由若幹個char字元組成,字元串的周遊實際上就是将字元串中的每一個字元提取出來。
NSString *str = @"YUSONGMOMO";
//字元串的長度
int count = [str length];
NSLog(@"字元串的長度是%d",count);
//周遊字元串中的每一個字元
for(int i =0; i < count; i++)
char c = [str characterAtIndex:i];
NSLog(@"字元串第 %d 位為 %c",i,c);
3.字元串的比較
isEqualToString 比較字元串是否完全相等,大小寫不一樣也無法完全比對。
hasPrefixe 比對字元串頭
haSuffix 比對字元串的尾巴
NSString *str0 = @"justcoding";
NSString *str1 = @"justcoding";
//字元串完全相等比較
if([str0 isEqualToString:str1])
NSLog(@"字元串完全相等");
//字元串以開頭比較
if([str0 hasPrefix:@"just"])
NSLog(@"字元串str0以just開頭");
//字元串以結尾比較
if([str1 hasSuffix:@"coding"])
NSLog(@"str1字元串以coding結尾");
//isEqualToString方法
NSString *astring01 = @"This is a String!";
NSString *astring02 = @"This is a String!";
BOOL result = [astring01 isEqualToString:astring02];
NSLog(@"result:%d",result);
//compare方法(comparer傳回的三種值)
NSString *astring02 = @"This is a String!";
BOOL result = [astring01 compare:astring02] = = NSOrderedSame;
NSLog(@"result:%d",result);
//NSOrderedSame 判斷兩者内容是否相同
NSString *astring02 = @"this is a String!";
BOOL result = [astring01 compare:astring02] = = NSOrderedAscending;
//NSOrderedAscending 判斷兩對象值的大小(按字母順序進行比較,astring02大于astring01為真)
NSString *astring01 = @"this is a String!";
BOOL result = [astring01 compare:astring02] = = NSOrderedDescending;
//NSOrderedDescending 判斷兩對象值的大小(按字母順序進行比較,astring02小于astring01為真)
//不考慮大 小寫比較字元串1
BOOL result = [astring01 caseInsensitiveCompare:astring02] = = NSOrderedSame;
//NSOrderedDescending判斷兩對象值的大小(按字母順序進行比較,astring02小于astring01為 真)
//不考慮大小寫比較字元串2
BOOL result = [astring01 compare:astring02 options:NSCaseInsensitiveSearch | NSNumericSearch] = = NSOrderedSame;
//NSCaseInsensitiveSearch:不區分大小寫比較 NSLiteralSearch:進行完全比較,區分大小寫 NSNumericSearch:比較字元串的字元個數,而不是字元值。
判斷的方法可以利用 NSString 類别中 caseInsensitiveCompare: 所回傳 -1、0 或是 1的數值,判定兩個字串之間得排序關系,其程式瑪如下。
NSString *string = @"0";
NSComparisonResult result = [string caseInsensitiveCompare:@"A"];
switch (result) {
case NSOrderedAscending:
NSLog(@"升幂");
break;
case NSOrderedSame:
NSLog(@"忽略大小寫相同的字串");
case NSOrderedDescending:
NSLog(@"降幂");
default:
NSLog(@"無法判定");
4.檔案字元串操作(讀寫)
//從檔案讀取字元串:initWithContentsOfFile方法
NSString *path = @"astring.text";
NSString *astring = [[NSString alloc] initWithContentsOfFile:path];
NSLog(@"astring:%@",astring);
[astring release]; //astring=nil;
//寫字元串到檔案:writeToFile方法
NSString *astring = [[NSString alloc] initWithString:@"This is a String!"];
NSString *path = @"astring.text";
[astring writeToFile: path atomically: YES];
[astring release]; //astring=nil;
//擴充路徑
NSString *Path = @"~/NSData.txt";
NSString *absolutePath = [Path stringByExpandingTildeInPath];
NSLog(@"absolutePath:%@",absolutePath);
NSLog(@"Path:%@",[absolutePath stringByAbbreviatingWithTildeInPath]);
//檔案擴充名
NSLog(@"Extension:%@",[Path pathExtension]);
5.字元串的截取和大小寫
//改變字元串的大小寫
NSString *string1 = @"A String";
NSString *string2 = @"String";
NSLog(@"string1:%@",[string1 uppercaseString]);//大寫
NSLog(@"string2:%@",[string2 lowercaseString]);//小寫
NSLog(@"string2:%@",[string2 capitalizedString]);//首字母大小
Java代碼
NSString *str0 = @"中文my name is xuanyusong";
//截取字元串起始點到index為4之間的内容
NSString * to = [str0 substringToIndex:4];
NSLog(@"to = %@",to);
//截取字元index為2 到結尾之間的内容
NSString * from = [str0 substringFromIndex:2];
NSLog(@"from = %@",from);
//設定截取字元串的範圍
//從第二位開始,長度為十
NSRange rang = NSMakeRange(2, 10);
NSString * strRang = [str0 substringWithRange:rang];
NSLog(@"rang = %@",strRang);
//設定字元串首字母大寫
NSLog(@"str0首字母大寫:%@",[str0 capitalizedString]);
//設定字元串全部内容為大寫
NSLog(@"str0大寫:%@",[str0 uppercaseString]);
//設定字元全部内容為小寫
NSLog(@"str0小寫:%@",[str0 lowercaseString]);
6.搜尋字元串與替換字元串
NSString *temp = @"is";
NSRange rang = [str0 rangeOfString:temp];
NSLog(@"搜尋的字元串在str0中起始點的index 為 %d", rang.location);
NSLog(@"搜尋的字元串在str0中結束點的index 為 %d", rang.location + rang.length);
//将搜尋中的字元串替換成為一個新的字元串
NSString *str = [str0 stringByReplacingCharactersInRange:rang withString:@"哇咔咔卡卡咔"];
NSLog(@"替換後字元串為%@", str);
//将字元串中" " 全部替換成 *
str = [str0 stringByReplacingOccurrencesOfString :@" " withString:@"@"];
拓展:使用下面這個方法整體替換字元串還可以設定替換的區域。
stringByReplacingOccurrencesOfString:(NSString*)withString:(NSString *) options:(NSStringCompareOptions)range:(NSRange)
7.字元串尾部添加
使用alloc在記憶體中建立字元串對象後邊可以動态的操作這個字元串,修改與添加等。
appendstring 方法:向字元串尾部添加一個字元串。
appendFormat方法:向字元串尾部添加多個類型的字元串,可以添加任意數量與類型的字元串。
NSMutableString * str = [[NSMutableString alloc] init];
//添加普通的字元串
[str appendString:@"aaa"];
//添加字元串 整型 字元型
[str appendFormat:@"我的名字:%@ 我的年齡:%d 我的郵箱:%s",@"justcoding", 25,"[email protected]"];
NSLog(@"str = %@",str);
8. 字元串中删除元素
stringWithString 方法:用于建立字元串初始化指派
rangeOfString方法:傳入字元串傳回一個在該字元串中的範圍 也可以寫 NSMakeRange(0, 3)意思是範圍在字元串0位到第3位
deleteCharactersInRange:删除字元串 參數為Range 就是删除的範圍。
//建立字元串
NSMutableString *str = [NSMutableString stringWithString:@"justcoding is best!"];
//删除字元串中含"justcoding"的字元
[str deleteCharactersInRange: [str rangeOfString: @"justcoding"]];
9. 字元串插入
insertString方法:第一個參數 插入的字元串對象, 第二個參數 插入的位置。
NSMutableString *str = [NSMutableString stringWithString:@"justcoding is"];
//在str第10位插入字元串
[str insertString:@"best man" atIndex:10];
10. 字元串拷貝
NSMutableString *str1 = [NSMutableString stringWithString: @"字元串1"];
NSMutableString *str2;
//字元串指派
str2 = str1;
[str2 appendString: @" 和字元串2"];
NSLog (@"str1 = %@", str1);
NSLog (@"str2 = %@", str2);
為什麼給str2添加資料後 str1的資料也改變了?這就是指針的魅力所在,因為我們操作的是指針,str2 =str1 意思是兩個指針同時指向一塊記憶體,那麼str2指向的記憶體内容改變以後str1當然跟着改變了。
11.字元串與指定類型轉換
如果轉換的參數非法的話不會抛出異常,好比用中文去轉整型。不會報錯 但是轉換結果為 0 ,預設值。
//字元串轉整型
NSString *str0 = @"1121";
//NSString *str0 = @"中國";
//把字元串強轉成整型
int i = [str0 intValue];
NSLog (@"轉換後:%i", i);
//字元串轉interger
NSString *str1 = @"1985";
// NSString *str1 = @"中國";
//把字元串強轉成interger
NSInteger ii = [str1 integerValue];
NSLog (@"轉換後:%i", ii);
//字元串轉double
NSString *str2 = @"3.145926";
//NSString *str2 = @"中國";
//把字元串強轉成double
double d = [str2 doubleValue];
NSLog (@"轉換後:%f", d);
//字元串轉float
NSString *str3 = @"3.145926";
//NSString *str3 = @"中國";
//把字元串強轉成float
double f = [str3 floatValue];
NSLog (@"轉換後:%f", f);
NSString常用方法總結
+(id)stringWithContentsOfFile:path encoding:enc err
建立一個新字元串并将其設定為 path 指定檔案的内容,使用字元編碼 enc,在err 上傳回錯誤
+(id)stringWithContentsOfURL:url encoding:enc err
建立一個新字元串并将其設定為 url 所指向的内容,使用字元編碼 enc,在err 上傳回錯誤
+(id)string
建立一個新的空字元串
+(id)stringWithString:nsstring
建立一個新字元串,将其内容設定為 nsstring 内容
-(id)initWithString:nsstring
将字元串内容設定為 nsstring 内容
-(id)initWithContentsOfFile:path encoding:enc error:err
将字元串設定為 path 指定檔案的内容,使用字元編碼 enc,在err 上傳回錯誤
-(id)initWithContentsOfURL:url encoding:enc error:err
将字元串設定為 url 所指向的内容,使用字元編碼 enc,在err 上傳回錯誤
-(UNSigned int)length
傳回字元串中字元數目
-(unichar)characterAtindex:i
傳回索引i 所在UniCode 字元
-(NSString*)substringFromIndex:i
傳回從索引 i 開始到結尾的子字元串
-(NSString*)substringWithRange:range
根據指定範圍傳回子字元串
-(NSString*)substringToIndex:i
傳回從字元串開始到 索引 i 的子字元串
-(NSComparator*)caseInsensitiveCompare:nsstring
比較兩個字元串大小,忽略大小寫
-(NSComparator*)compare:nsstring
比較兩個字元串大小
-(BOOL)hasPrefix:nsstring
測試字元串是否以 nsstring 開始
-(BOOL)hasSuffix:nsstring
測試字元串是否以 nsstring 結尾
-(BOOL)isEqualToString:nsstring
測試兩個字元串是否相等
-(NSString*)capitalizedString
傳回字元串,串中的每個單詞的首字母大寫,其餘字母小寫
-(NSString*)lowercaseString
傳回轉換為小寫的字元串
-(NSString*)uppercaseString
傳回轉換為大寫的字元串
-(const char*)UTF8String
傳回UTF8編碼格式的字元串
-(double)doubleValue
傳回轉換為double 類型的字元串
-(float)floatValue
傳回轉換為 float 類型的字元串
-(NSInteger)integerValue
傳回轉換為 NSInteger 類型的新字元串
-(int)intvalue
傳回轉換為 int 的字元串
NSMutableString可修改字元串常用方法
+(id)stringWithCapacity:size
建立一個字元串,容量為size大小
-(id)initWithCapacity:size
初始化一個字元串,容量為size
-(void)setString:nsstring
将字元串設定為 nsstring
-(void)appendString:nsstring
在字元串末尾追加字元串 nsstring
-(void)deleteCharatersInRange:range
删除指定range 中的字元
-(void)insertString:nsstring atIndex:i
以索引 i 為起始位置插入 nsstring
-(void)replaceCharatersInRange;range withString:nsstring
使用 nsstring 替換 range 指定的字元
-(void)replaceOccurrencesOfString:nsstring withString:nsstring2options:opts range:range
根據選項 opts ,使用指定 range 中的nsstring2 替換所有的 nsstring