NSString 用法及其总结
引言:本文是本人的自我归纳和总结,如有不正确之处,希望各位能够指出错误并给出指导,谢谢!
- 1.概念
- 2.初始化
- 3.获取(截取)字符串
- 4.拼接字符串
- 5.替换字符串
- 6.比较字符串
- 7.分割字符串
- 8.字符串大小写转换
- 9.拓展
1.概念
NSString : OC语言中使用的字符串写法,是Foundation框架下的类,在iOS 2.0及之后都在使用,是不可改变的字符串。
2.初始化
常规的初始化方法:
NSString *str1 = [[NSString alloc]initWithString:@"今天天气真不错"];
NSString *str2 = @"大家一起出去冬游吧";
//以字符串来初始化一个字符串
NSString *str3 = [NSString stringWithString:str2];
字符串的万能方法,常用于字符串的拼接
NSString *string = [NSString stringWithFormat:@"%@, 我觉得睡觉比较好", str1, nil];
3.获取(截取)字符串
1.substringFromIndex:(NSInteger) :从索引位置开始(包括当前位置),截取到该字符结束
2.substringToIndex:(NSInteger) :从字符串开头截取,知道索引位置结束(不包括输入位置)
3.substringWithRange:(NSRange) :通过范围来截取子串,从location开始(包含)往后截取length个,注意小心越界问题
4.length :获取字符串的长度,返回一个NSInteger类型的值
- 注意:NSString中使用的方法都需要一个新的字符串来接受输出的字符串,并不会改变字符串本身,因为NSString类型的字符串是不变的。下面介绍的方法亦同。
//截取字符串代码实现:
NSString *string = @"today study OC";
NSString *str1 = [string substringFromIndex:3];
NSLog(@"%@", str1);//输出结果为:"ay student OC"
NSString *str2 = [string substringToIndex:3];
NSLog(@"%@", str2);//输出结果为:"tod"
NSString *str3 = [string substringWithRange:NSMakeRange(3, 5)];
NSLog(@"%@", str3);//输出结果为:"ay st"
NSLog(@"%ld", string.length);//输出结果为:16
4.拼接字符串
1.stringWithFormat:(NSString *), … :字符串的万能用法
2.string stringByAppendingFormat:(NSString *), … :参数用法和万能用法相同
3.string stringByAppendingString:(NSString *):以字符串来拼接字符串
//拼接字符串代码实现
NSString *string = @"paly";
NSString *newString = [string stringByAppendingString:@"Game"];
NSLog(@"%@", newString);//输出:“palyGame”
※ 拓展:
1.stringByAppendingPathComponent:(NSString *) :是在字符串之后添加“/”号,在拼接上字符。
2.stringByAppendingPathExtension:(NSString *) :这个是给字符串添加后缀的方法。
//引用上面newString
newString = [newString stringByAppendingPathComponent:@"hello"];
NSLog(@"%@", newString);//输出:“palyGame/hello”
newString = [newString stringByAppendingPathExtension:@"png"];
NSLog(@"%@", newString);//输出:“palyGame/hello.png”
5.替换字符串
1.stringByReplacingOccurrencesOfString:(NSString*) withString:(NSString*) :替换字符串内的固定内容
2.stringByReplacingCharactersInRange:(NSRange) withString:(NSString *) :替换字符串内的固定位置
//代码实现
NSString *string = @"今天好累,今天还下雨了";
NSString *newStr = [string stringByReplacingOccurrencesOfString:@"今天" withString:@"昨天"];
NSLog(@"%@",newStr);//输出:“昨天好累,昨天还下雨了”
NSString *newStr2 = [string stringByReplacingCharactersInRange:NSMakeRange(1, 3) withString:@"不累"];//包含输入的范围值
NSLog(@"%@", newStr2);//输出:“今不累,今天还下雨了”
※ 拓展:
stringByReplacingOccurrencesOfString:(NSString *) withString:(NSString *) options:(NSStringCompareOptions) range:(NSRange)
通过options输入判断条件(NSStringCompareOptions对应的条件),来替换输入范围的值。
6.比较字符串
- 注意:两个字符串进行比较的时候,不能直接判断它们是否相等,需要使用比较的方法来进行两个字符串的对比
1.isEqualTo:(id) 比较两个对象是否相等,返回值为一个BOOL类型的值,相等为YES,不相等为NO。
2.compare:(NSString *) 比较两个字符串,从头开始,相同则进行下一个,返回值为一个NSInteger类型的值(-1、0、1),为-1,说明后面的大;为0,说明相等;为1,说明前面大。
3.hasPrefix:(NSString *) 判断字符串以什么开头,返回一个BOOL类型的值,等为YES,不等为NO。
4.hasSuffix:(NSString *) 判断字符串以什么结尾,返回一个BOOL类型的值,同上。
5.containsString:(NSString *) 查看字符串中是否包含输入的字符串,也是返回一个BOOL类型的值。
//比较字符串代码实现
NSString *strOne = @"比较字符串";
NSString *strTwo = @"字符串";
NSLog(@"%d", [strOne isEqualTo:strTwo]);//输出结果为:“0”
NSLog(@"%ld", [strTwo compare:strOne]);//输出结果为:“-1”
NSLog(@"%d", [strOne hasPrefix:@"字"]);//输出结果为:“0”
NSLog(@"%d", [strTwo hasSuffix:@"串"]);//输出结果为:“1”
NSLog(@"%d", [strOne containsString:strTwo]);//输出结果为:“1”
7.分割字符串
componentsSeparatedByString:(NSString *) 遇到输入的字符串,进行分割,并且消除输入的字符串。返回值是一个数组。
//分割字符串代码实现
NSString *string = @"20#分割#字符串";
NSArray *array = [string componentsSeparatedByString:@"#"];
for (NSString *str in array) {
NSLog(@"%@", str);
}
//输出结果分三次,分别为:“20”,“分割”,“字符串”
※ 拓展:
componentsSeparatedByCharactersInSet:(NSCharacterSet *)
遇到一个字符集内包含的元素便进行分割。
8.字符串大小写转换
1.capitalizedString 将单词的首字母转换为字母大写,其余的转换为小写
2.lowercaseString 将字符串中所有的字母转化为小写
3.uppercaseString 将字符串中所有的字母转化为大写
//字符串大小写转换代码实现
NSString *string = @"Today tHeWeathEr IS rEally gOOd";
NSLog(@"%@", [string capitalizedString]);
//输出结果为:“Today Theweather Is Really Good”
NSLog(@"%@", [string lowercaseString]);
//输出结果为:“today theweather is really good”
NSLog(@"%@", [string uppercaseString]);
//输出结果为:“TODAY THEWEATHER IS REALLY GOOD”
9.拓展
1.NSString 赋值为文件路径,通过方法获取文件内容
例如下方法:
stringWithContentsOfFile: (NSString * ) encoding:(NSStringEncoding) error:(NSError *__autoreleasing *)
参数说明:1.为一个路径、2.编码格式、3.错误信息
//取得一个.txt文本的内容
NSString *path = @"/Users/dllo/Desktop/SSQ/SSQ/area.txt";
NSString *str = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
-(NSString*)lowercaseString 回转换为小写的字符串
-(NSString*)uppercaseString 返回转换为大写的字符串
-(const char*)UTF8String 返回UTF8编码格式的字符串
-(double)doubleValue 返回转换为double 类型的字符串
-(float)floatValue 返回转换为 float 类型的字符串
-(NSInteger)integerValue 返回转换为 NSInteger 类型的新字符串
-(int)intvalue 返回转换为 int 的字符串注意:这些方法转化的原字符串需要符合转化的条件,不然会输出错误
//返回一个integer类型的字符串
NSString *str = @"1231asda";
NSLog(@"%ld", [str integerValue]);
//输出结果为:“1231”