Object-C结构:NSString学习

NSString

创建常量字符串

以下字符串输出函数均为:

NSLog("字符串如下:%@", astring);

/*初始化空字符串,并赋值*/
NSString *astring = [[NSString alloc] init];
astring = @"This is a String!";

/*函数式创建*/
NSString *astring = [[NSString alloc] initWithString:@"This is a String!"];

/*快速创建*/
NSString *astring = @"This is a String!";

/*占位符创建*/
char * i = "haha"; 
int j = 2;
NSString *astring = [[NSString alloc] initWithString:[NSString stringWithFormat:@"%s.This is %i string!",i,j]];

不过,不建议使用以下两种方法:

char *Cstring = "This is a String!";

/*不建议使用以下两种方式,第一种已废弃. 第二种有快捷创建方式*/
NSString *astring = [[NSString alloc] initWithCString:Cstring];
NSString *astring2 = [[NSString alloc] initWithString:@"This is a String!"];

⼤小写处理⽅方法

uppercaseString / lowercaseString / capitalizedString

NSString * string = @"i'm A Student!";
NSLog(@"string1:%@",[string uppercaseString]);//大写
    
NSLog(@"string2:%@",[string lowercaseString]);//小写
    
NSLog(@"string3:%@",[string capitalizedString]);//首字母大小

NSString⽐较⼤⼩

isEqualToString / compare

isEqualToString:是否相等

NSString *astring01 = @"This is a String!";
NSString *astring02 = @"This is a String!";
/*相同为 true (1),不同为 false (0)*/
BOOL result = [astring01 isEqualToString:astring02];
NSLog(@"result:%d",result);

compare:比较大小
返回值:

NSOrderedAscending = -1,

NSOrderedSame,

NSOrderedDescending

NSString *astring01 = @"This is a String!";
NSString *astring02 = @"This is a String!";    
BOOL result = [astring01 compare:astring02] == NSOrderedSame;    //NSOrderedSame判断两者内容是否相同
 
NSLog(@"result:%d",result);    
 


//NSOrderedAscending判断两对象值的大小(按字母顺序进行比较,astring02大于astring01为真)
result = [astring01 compare:astring02] == NSOrderedAscending;

 
NSLog(@"result:%d",result);

 
result = [astring01 compare:astring02] == NSOrderedDescending;    //NSOrderedDescending判断两对象值的大小(按字母顺序进行比较,astring02小于astring01为真)
NSLog(@"result:%d",result); 

/*附加条件*/
//1.caseInsensitiveCompare :无视大小写:
BOOL result = [astring01 caseInsensitiveCompare:astring02] == NSOrderedSame;    //(按字母顺序进行比较,astring02小于astring01为真)
 
 //2.附加参数
 BOOL result = [astring01 compare:astring02
 				  options:NSCaseInsensitiveSearch | NSNumericSearch]
 				 == NSOrderedSame;   
//NSCaseInsensitiveSearch:不区分大小写比较 NSLiteralSearch:进行完全比较,区分大小写 NSNumericSearch:比较字符串的字符个数,而不是字符值。

字符串替换和截取

截取

  • substringToIndex: 从字符串的开头一直截取到指定的位置,但不包括该位置的字符:
NSString *string2 = [string1 substringToIndex:3];
  • substringFromIndex: 以指定位置开始(包括指定位置的字符),并包括之后的全部字符:
NSString *string2 = [string1 substringFromIndex:3];
  • substringWithRange: //按照所给出的位置,长度,任意地从字符串中截取子串:
NSString *string2 = [string1 substringWithRange:NSMakeRange(0, 4)]; ```

**查找**

- hasPrefix: //检查字符串是否以另一个字符串开头:<br>

[String1 hasPrefix:@"NSString"] = = 1 ? NSLog(@"YES") : NSLog(@"NO");


- rangeOfString: //查找字符串某处是否包含其它字符串

NSRange range = [string1 rangeOfString:string2];
NSString *astring = [[NSString alloc] initWithString:[NSString stringWithFormat:@"Location:%i,Leight:%i",location,leight]];


**付加**

- 在字符串temp的基础继续添加 int i 与 char* c 组成一个新的字符串

NSString *str4 = [temp stringByAppendingFormat:@"整型: %d 字符型 :%s",123,@"hahaha"];

   
**替换**

 - 将搜索中的字符串替换成为一个新的字符串  <br/>
 

NSString *str = [str0 stringByReplacingCharactersInRange:rang withString:@"hahaah"];

  
 - 将字符串中" " 全部替换成 @  <br/>

str = [str0 stringByReplacingOccurrencesOfString 😡" " withString:@"@"];

 
 
##文件操作
**从文件创建字符串**
 

NSString *path = [[NSBundlemainBundle] pathForResource:@"astring.text" ofType:nil];
NSString *astring = [[NSString alloc] initWithContentsOfFile:path];
NSLog(@"astring:%@",astring);


**写入到文件**

NSString *astring = [[NSString alloc] initWithString:@"This is a String!"];
NSLog(@"astring:%@",astring);
NSString *path = @"astring.text";
[astring writeToFile: path atomically: YES];//原子性写入


#附录

##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:nsstring2 options:opts range:range	根据选项 opts ,使用指定 range 中的nsstring2 替换所有的 nsstring
posted @ 2015-07-08 02:49  Orange-W  阅读(258)  评论(0编辑  收藏  举报