NSString 不可變字符串網絡
NSMutableString 可變字符串app
定義:編碼
NSString *str = [[NSString alloc] init]; atom
NSString *str = [[[NSString alloc] init] autorelease]; url
注意:在NSString 中存在本身的實例化和初始化的方法 例如: spa
NSString *str1 = [NSString stringWithCString:"new String" enconding: NSACIIStringEncoding]; code
NSString *str2 = [NSString alloc] initWithCString:"new String" enconding: NSACIIStringEncoding]; orm
str1和str2兩個對象是相同的。 對象
NSStringEncoding 中經常使用的字符編碼 :索引
NSASCIIStringEncoding
NSUTF8StringEncoding
NSUnicodeStringEncoding
NSString建立實例 :
帶「@」符號的方法只能定義含有英文和數字的NSString實例,例如:
NSString *str = "Hello money~";
生成含有中文的NSString方法:
(1)此方法自動釋放內存
NSString *string = [NSString stringWithCString:
"您好" encoding:NSUTF8StringEncoding];
(2)進行alloc後進行初始化
NSString *string = [[NSString alloc] initWithCString:
"您好" encoding:NSUTF8StringEncoding];
使用格式建立字符串:
+ (id)stringWithFormat:(NSString *)format...
- (id)initWithFormat:(NSString *)format...
例如:
NSString *str = "hello";
NSString *string = [NSString stringWithFormat:@"%@ world",str];
NSLog(string); 結果:hello world
經常使用的替換符:
%@ NSString實例
%d,%D,%i 整數
%u,%U 無符號整數
%x 將無符號整數以十六進制小寫字母顯示
%X 將無符號整數以十六進制大寫字母顯示
%f 小數
%c 字符
%s C語言字符串
%% 顯示%字符自己
字符串鏈接,插入和刪除 :
1、鏈接
- (NSString *)stringByAppendingString:(NSString *)string;
- (NSString *)stringByAppendingFormat:(NSString *)format...;
例如:
NSString *str1 = @"hello";
NSString *str2 = @"world";
NSString *str3 = [str1 stringByAppendingString:str2];
NSString *str4 = [str2 stringByAppendingFormat:
@"%d...%d",10,20];
str4 --> world 10...20
NSMutableString的生成:
NSString + (id)string; //生成空字符串的實例
+ (id)stringWithString:(NSString *)string; //帶自動釋放內存
- (id)initWithString:(NSString *)string;
例如:
NSMutableString *string =
[NSMutableString stringWithString:@"hello"];
2、追加字符串
NSMutableString
+ (void)appendString:(NSString *)string;
- (void)appendFormat:(NSString *)format...;
例如:
NSMutableString string = [NSMutableString string];
[string appendString:@"hello"];
[string appendString:@"money"];
[string appendString:@" and world"];
3、插入字符串
NSMutableString
+ (void)insertString:(NSString *)string atIndex:(unsigned)index;
從index位置插入字符串
例如:
NSMutableString *string =
[NSMutableString stringWithString:@"Mac X"];
[string insertString:@"OS" atIndex:4];
string --> Mac OS X
4、刪除字符串
NSMutableString
+ (void)deleteCharactersInRange:(NSRange)range;
例如:
NSMutableString *myString =
[NSMutableString stringWithString:@"Mac os"];
[myString deleteCharactersInRange:NSMakeRanger(0,1)];
等價於:
NSMutableString * myString =
[NSMutableString stringWithString:@"Mac os"];
NSRange range = [myString rangeofString:@」M」];
[myString deleteCharactersInRange:range];
以後myString 就變成了ac os;
5、字符串比較
NSString
- (BOOL)isEqualToString:(NSString *)string;
6、比較前置串和後置串
NSString
- (BOOL)hasPrefix:(NSString *)string;
- (BOOL)hasSuffix:(NSString *)string;
例如:
NSString *str1 = @"Mac OS";
NSString *str2 = @"Mac Pro";
BOOL flag;
flag = [str1 hasPrefix:@"Mac"]; YES
flag = [str2 hasSuffix:@"OS"]; NO
7、字符串檢索
若是找到就返回範圍,不然NSRange的location項被設置爲NSNotFound
- (NSRange)rangeOfString:(NSString *)subString;
- (NSRange)rangeOfString:(NSString *)subString
option:(unsigned)mask;
- (NSRange)rangeOfString:(NSString *)subString
option:(unsigned)mask range:(NSRange)range;
mask經常使用選項列表:
NSCaseInsensitiveSearch 不區分字母大小寫
NSLiteralSearch 對字符串進行字節單位的比較,通常可提升檢索速度
NSBackwardsSearch 從範圍的末尾開始檢索
NSAnchoredSearch 僅檢索制定範圍的前部。忽略字符串中間的檢索字符
例如:
NSString *string = @"hello world";
NSRange range = [string rangeOfString:@"he"];
if(range.location != NSNotFound)
{
NSLog(@" location=%d,length=%d",range.location,range.length);
}
8、截取字符串
(1)返回字符串開頭至index位的字符串 不包含索引位
- (NSString *)substringToIndex:(unsigned)index;
(2)返回字符串第index位至末尾的字符串 包含索引位
- (NSString *)substringFromIndex:(unsigned)index;
(3)返回字符串中範圍range內的字符串 包含索引位
- (NSString *)substringWithRange:(NSRange)range;
例如:
NSString *string = [string substringWithRange:NSMakeRange(5,2)];
9、讀取文本文件
NSString
+ (id)stringWithContentsOfFile:(NSString *)path
usedEncoding:(NSStringEncoding *)enc error:(NSError **)error //自動釋放內存
- (id)initWithContentsOfFile:(NSString *)path
encoding:(NSStringEncoding)enc error:(NSError **)error
例如:
NSString *string = [NSString stringWithContentsOfFile
:@"/user/test/LFF.txt" encoding:NSUTF8StringEncoding error: nil]
還有一個更強大的方法:
//NSURL *url = [[NSURL alloc] initWithString:
@"file:///Users/apple/Desktop/1.txt"];
NSURL *url = [NSURL fileURLWithPath:
@"/Users/apple/Desktop/1.txt"];
NSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:
NSUTF8StringEncoding error:nil];
NSLog(@"s6=\n%@", s6);
使用讀取URL的方法,不只能夠讀取本地資源,還能夠讀取網絡資源,但要注意資源路徑的格式:
URL : 資源路徑
協議頭://路徑
file://
ftp://
10、將字符串寫入文本文件
NSString
-(BOOL)writeToFile:(NSString*)path atomically:
(BOOL)useAuxiliaryFile encoding: (NSStringEncoding)
enc error:(NSError **)error
例如:[@"Jack\nJack" writeToFile:@"/Users/apple/Desktop/my.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];