iOS 開發:NSString 常用

http://furnacedigital.blogspot.com/2011/04/nsstring.html


NSString 是 Objective-C 語言中最常被使用的字串形式,原始 C 語言字串形式是由字元(Character)所組成,而 NSString 是由 Unichar 所組成,所能使用的位元數更廣,也能表達更多不同的字元,下面我們將介紹一些與 NSString 有關的常用語法。


如果開啟的是空白專案,在使用 NSString 語法時,可能需要引入其標頭檔,才能正常執行,下列程式碼是在以啟用 ARC(Automatic Reference Counting)機制的情況下為前提,ARC 機制可以讓您不必為變數所佔用的記憶體加以控管,如果您不想使用此機制,可以參考在 Xcode 4 中關閉 ARC 的方法一文,來針對部分的檔案或是整個專案關閉 ARC 機制。


1
#import <Foundation/NSString.h>



宣告與格式化

1
2
//建立字串物件
NSString *str = @"NSString";


1
2
//建立空字串
NSString *str =[[NSString alloc] init];


1
2
3
//與CString的轉換
char *cstring = "CString";
NSString *str = [[NSString alloc] initWithCString:cstring];


1
2
3
4
5
//字串格重新式化
NSString *str =[[NSString alloc] initWithString:@"NSString"];
 
str = [NSString stringWithFormat:@"This is %@", str];
NSLog(@"%@", str);


字串格式化


大小寫的轉換

1
2
3
4
5
6
7
8
9
//字串的大小寫轉換
NSString *str =[[NSString alloc] initWithString:@"NSString"];
 
//全部大寫
NSLog(@"%@",[str uppercaseString]);
//全部小寫
NSLog(@"%@",[str lowercaseString]);
//字首大寫
NSLog(@"%@", [str capitalizedString]);


字串的大小寫轉換
在 iOS 6 SDK 中,你可以使用 NSString 新的方法函式來變更字串的大小寫,新的方法函式加入了 NSLocale 的概念,使裝置在不同的語系設定下皆可以正確的轉換這些字串。
1
2
3
4
5
6
7
8
9
10
11
//全部大寫
NSString *upperString = [string uppercaseStringWithLocale:[NSLocale currentLocale]];
NSLog(@"全部大寫: %@", upperString);
 
//全部小寫
NSString *lowerString = [string lowercaseStringWithLocale:[NSLocale currentLocale]];
NSLog(@"全部小寫: %@", lowerString);
 
//只有字首大寫
NSString *capString = [string capitalizedStringWithLocale:[NSLocale currentLocale]];
NSLog(@"只有字首大寫: %@", capString)


iOS 6 SDK NSString 中新的方法函式


比較

1
2
3
4
5
6
7
8
9
10
//字串比較
NSString *str_A =[[NSString alloc] initWithString:@"NSString"];
NSString *str_B =[[NSString alloc] initWithString:@"nsstring"];
BOOL compare;
 
//字串區分大小寫比較
compare = [str_A isEqualToString:str_B];
 
//字串不區分大小寫比較
compare = [str_A caseInsensitiveCompare:str_B] == NSOrderedSame;


1
2
3
4
5
6
7
8
//搜尋字串
NSString *str =[[NSString alloc] initWithString:@"NSString"];
 
//有區分大小寫
NSRange search = [str rangeOfString:@"Str"];
 
//數字表示第幾字元開始有符合(從0開始)
NSLog(@"%i", search.location);


字串的收尋


擷取

1
2
3
4
5
6
7
8
9
10
11
//字串擷取
NSString *str =[[NSString alloc] initWithString:@"NSString"];
 
//擷取前五位元
NSLog(@"%@", [str substringToIndex:5]);
 
//擷取時略過前五位元
NSLog(@"%@", [str substringFromIndex:5]);
 
//從第二個位元開始擷取三個位元(第一個字符為第零位元)
NSLog(@"%@", [str substringWithRange:NSMakeRange(2, 3)]);


字串擷取


替換

1
2
3
4
5
6
7
8
9
10
11
//字串替換
NSString *str =[[NSString alloc] initWithString:@"NSString"];
NSString *_str;
 
//尋找字串並取代
_str = [str stringByReplacingOccurrencesOfString:@"NS" withString:@"CS"];
NSLog(@"%@", _str);
 
//尋找範圍並取代
_str = [str stringByReplacingCharactersInRange:NSMakeRange(2, 3) withString:@"*******"];
NSLog(@"%@", _str);


替換字串


排列

字串同時也可以做升冪或是降冪的排列,以降冪的方式舉例來說,數字通常會比英文字母獲得比較高的排序數值,而符號的排序數值又會比數自來的更高些,因此以降冪的排序結果,最後就會呈現符號 → 數字 → 英文字母這樣的排序方式,你可以參考關於兩個 NSString 字串之間的升冪與降冪排序一文,來獲得更多字串排列的資訊。


拆解
在某些情況下可能會需要拆解字串,例如文件內容的處理,或是分析從網路上擷取下來的字串等。在 NSString 類別中就有提供拆解的方法,並且將拆解所得到的字串分別置入 NSArray 中,你可以參考NSString 字串的拆解方法一文,來獲得更多字串拆解的資訊。


程式語言編年史

程式語言編年史原文 下面這張圖片描繪了整個程式語言的歷史。包括各種程式語言的發明人、程式語言的特點和適用領域、被什麼網站或公司使用等 (檢視 完整高清圖 )。 之所以會有那麼多不同的程式語言是因為設計程式語言的初衷不同、對語言學習曲線的追求不同、不同程式之間的執行成本差異...