介紹
我們現在開發都是面向對象,面向對象的優點就不在這里介紹了,NSString就是字符串面向對象的產物,一個NSString對象就代表一個字符串。
NSString創建
1.直接創建
NSString *str = @"string";2.格式化的方式
NSString *str = [NSString stringWithFormat:@"My age is %d", 10];NSString *str = [[NSString alloc] initWithFormat:@"My age is %d", 10];3.從文件中讀取
// 用來保存錯誤信息NSError *error = nil;// 讀取文件內容NSString *str = [NSString stringWithContentsOfFile:@"/Users/Gavin/Desktop/test.txt" encoding:NSUTF8StringEncoding error:&error];// 如果有錯誤信息if (error) { NSLog(@"讀取失敗, 錯誤原因是:%@", [error localizedDescription]);} else { // 如果沒有錯誤信息 NSLog(@"讀取成功, 文件內容是:/n%@", str);}4.從URL中讀取
// 用來保存錯誤信息NSError *error = nil;// 創建URL路徑NSURL *url = [NSURL URLWithString:@"file:///Users/Gavin/Desktop/test.txt"];// 讀取文件內容NSString *str = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];// 如果有錯誤信息if (error) { NSLog(@"讀取失敗, 錯誤原因是:%@", [error localizedDescription]);} else { // 如果沒有錯誤信息 NSLog(@"讀取成功, 文件內容是:/n%@", str);}NSString儲存
儲存到文件
NSString *str = @"test";[str writeToFile:@"/Users/gavin/Desktop/str.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];儲存到URL
[str writeToURL:[NSURL URLWithString:@"/Users/gavin/Desktop/str.txt"] atomically:YES encoding:NSUTF8StringEncoding error:nil];NSString大小寫處理
全部字符轉為大寫
- (NSString *)uppercaseString;全部字符轉為小寫
- (NSString *)lowercaseString首字母大寫,其他小寫
- (NSString *)capitalizedStringNSString比較
//兩個字符串的內容相同就返回YES, 否則返回NO- (BOOL)isEqualToString:(NSString *)aString;/* 這個方法可以用來比較兩個字符串內容的大小 比較方法: 逐個字符地進行比較ASCII值,返回NSComparisonResult作為比較結果 NSComparisonResult是一個枚舉,有3個值: 如果左側 > 右側,返回NSOrderedDescending, 如果左側 < 右側,返回NSOrderedAscending, 如果左側 == 右側返回NSOrderedSame*/- (NSComparisonResult)compare:(NSString *)string;//忽略大小寫進行比較,返回值與compare:一致- (NSComparisonResult) caseInsensitiveCompare:(NSString *)string;NSString搜索
//是否以aString開頭- (BOOL)hasprefix:(NSString *)aString;//是否以aString結尾- (BOOL)hasSuffix:(NSString *)aString;/* 用來檢查字符串內容中是否包含了aString 如果包含, 就返回aString的范圍 如果不包含, NSRange的location為NSNotFound, length為0*/- (NSRange)rangeOfString:(NSString *)aString;NSRange
NSRange是Foundation框架中比較常用的結構體, 它的定義如下:
typedef struct _NSRange { NSUInteger location; NSUInteger length;} NSRange;// NSUInteger的定義typedef unsigned int NSUInteger;NSRange用來表示事物的一個范圍,通常是字符串里的字符范圍或者數組里的元素范圍,NSRange有2個成員: NSUInteger location : 表示該范圍的起始位置 NSUInteger length : 表示該范圍內的長度
NSString *str = @"gavin.swift";//其中swift//location為:6;//length為:5NSRang創建
//方式1NSRange range;range.location = 6;range.length = 5;//方式2NSRange range = {6, 5};//或者 NSRange range = {.location = 6,.length = 5};//方式3 : 使用NSMakeRange函數NSRange range = NSMakeRange(6, 5);NSString截取和替換
從指定位置from開始(包括指定位置的字符)到尾部
- (NSString *)substringFromIndex:(NSUInteger)from;從字符串的開頭一直截取到指定的位置to,但不包括該位置的字符
- (NSString *)substringToIndex:(NSUInteger)to;按照所給出的NSRange從字符串中截取子串
- (NSString *)substringWithRange:(NSRange)range;用replacement替換target
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement;NSString路徑
是否為絕對路徑
- (BOOL)isAbsolutePath;獲得最后一個目錄
- (NSString *)lastPathComponent;刪除最后一個目錄
- (NSString *)stringByDeletingLastPathComponent;在路徑的后面拼接一個目錄
- (NSString *)stringByAppendingPathComponent:(NSString *)str;NSString文件拓展名
獲得拓展名
- (NSString *)pathExtension;刪除尾部的拓展名
- (NSString *)stringByDeletingPathExtension;在尾部添加一個拓展名
- (NSString *)stringByAppendingPathExtension:(NSString *)str;NSString其他用法
返回字符串的長度
- (NSUInteger)length;返回index位置對應的字符
- (unichar)characterAtIndex:(NSUInteger)index;轉為基本數據類型
- (double)doubleValue;- (float)floatValue;- (int)intValue;轉為C語言中的字符串
- (char *)UTF8String;去除所有的空格
[str stringByReplacingOccurrencesOfString:@" " withString:@""]去除首尾的空格
[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];NSMutableString
NSMutableString是NSString的子類,區別在于NSString是不可變的, 里面的文字內容是不能進行修改的,NSMutableString是可變的, 里面的文字內容可以隨時更改,子類可以使用父類所有方法。
NSMutableString常用方法
拼接aString到最后面
- (void)appendString:(NSString *)aString;拼接一段格式化字符串到最后面
- (void)appendFormat:(NSString *)format;刪除range范圍內的字符串
- (void)deleteCharactersInRange:(NSRange)range;在loc這個位置中插入aString
- (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc;使用aString替換range范圍內的字符串
- (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString;PS
這出來感覺像是中文翻譯有木有,NSString的其他方法大家可以再官方文檔中找到對應的解釋和最新的替代,這里只是摘要和總結。