iOS开发>>>NSString常用方法

来源:互联网 发布:淘宝服装宝贝描述素材 编辑:程序博客网 时间:2024/04/30 13:58

NSString 


--实例化方法-------------- 

NSString *str = [[NSString alloc] init]; 

NSString *str = [[[NSString alloc] init] autorelease]; 


注意:在NSString 中存在自己的实例化和初始化的方法例如: 

NSString *str1 = [NSString stringWithCString:"new String" enconding: NSACIIStringEncoding]; 

NSString *str2 = [NSString alloc] initWithCString:"new String" enconding: NSACIIStringEncoding〕; 

str1str2两个对象是相同的。 


--NSStringEncoding 中常用的字符编码---------------- 

NSASCIIStringEncoding 

NSUTF8StringEncoding 

NSUnicodeStringEncoding 


--NSString创建实例---------------- 

“@”符号的方法只能定义含有英文和数字的NSString实例,例如

NSString *str = "Hello money~"; 

--生成含有中文的NSString方法------------- 

//此方法自动释放内存 

+ (id)stringWithCString:(const char*)cString encoding:(NSStringEncoding)encoding; 

//进行alloc后进行初始化 

- (id)initWithCString:(const char*)cString encoding:(NSStringEncoding)encoding; 

例如

NSString *string = [NSString stringWithCString:"您好" encoding:NSUTF8StringEncoding]; 

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语言字符串 

%% 显示%字符本身 


-------------------------- 

NSRange 


--NSRange的定义 

typedef struct _NSRange 

unsigned int location; 

unsigned int length; 

}NSRange; 


NSMakeRange函数 

--这个函数比较特殊 返回一个NSRange的对象。 

NSMakeRanger(unsigned int location,unsigned int length); 

例如: 

NSRange range = NSMakeRanger(0,5); 

NSLog(@"location is %d,length is %d",range.location,range.length); 


--------------------------- 

计算字符串长度 

- (unsigned int)length; 


--------------------------- 

字符串连接,插入和删除 

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 *string = [NSMutableString stringWithString:@"Mac os"]; 

[string deleteCharactersInRange:NSMakeRanger(0,1)]; 

NSLog(string); 

string -->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、字符串检索 

NSString 

//如果找到就返回范围,否则NSRangelocation项被设置为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、截取字符串 

NSString 

- (NSString *)substringToIndex:(unsigned)index; //返回字符串开头至index位的字符串不包含索引位 

- (NSString *)substringFromIndex:(unsigned)index; //返回字符串第index位至末尾的字符串包含索引位 

- (NSString *)substringWithRange:(NSRange)range; //返回字符串中范围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/yw.txt" encoding:NSUTF8StringEncoding error:&error]; 

if(string){} 

10、输出文本文件 

NSString 

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error 

//参数 atomically 暂时将文件保存到辅助文件中 

//path 

The file to which to write the receiver. If path contains a tilde (~) character, you must expand it withstringByExpandingTildeInPath before invoking this method. 

----下面是网上找的例子 感谢 @chenshizero 

//扩展路径 

NSString *Path = @"~/NSData.txt"; 

NSString *absolutePath = [Path stringByExpandingTildeInPath]; 

NSLog(@"absolutePath:%@",absolutePath); 

NSLog(@"Path:%@",[absolutePath stringByAbbreviatingWithTildeInPath]); 


//文件扩展名 

NSString *Path = @"~/NSData.txt"; 

NSLog(@"Extension:%@",[Path pathExtension]);