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