### 1. 将NSData / NSString转化
```
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; // 将字符串转data
NSString* str = [[NSString alloc] initWithData:data ]; // 将data转为字符串
```
### 2. 字符串比较
- OC语言,比较两个字符串是否相等
```
//isEqualToString方法
NSString *astring01 = @"This is a String!";
NSString *astring02 = @"This is a String!";
BOOL result = [astring01 isEqualToString:astring02];
NSLog(@"result:%d",result);
```
- C语言 比较两个字符串是否相等(一般不用)
```
char string1[] = "string!";
char string2[] = "string!";
if(strcmp(string1, string2) == 0) {
NSLog(@"1");
}
```
- compare 比较两个字符串是否相等
```
//compare方法(comparer返回的三种值)
NSString *astring01 = @"This is a String!";
NSString *astring02 = @"This is a String!";
BOOL result = [astring01 compare:astring02] = = NSOrderedSame;
NSLog(@"result:%d",result);
//NSOrderedSame判断两者内容是否相同
```
- 忽略大小写比较两个字符串
```
//不考虑大小写比较字符串1
NSString *astring01 = @"this is a String!";
NSString *astring02 = @"This is a String!";
BOOL result = [astring01 caseInsensitiveCompare:astring02] = = NSOrderedSame;
NSLog(@"result:%d",result);
//NSOrderedDescending判断两对象值的大小(按字母顺序进行比较,astring02小于astring01为真)
```
- 判断一个字符串是否包含另一个字符串
```
// 判断字符串中是否包含“a”
NSString *str = @"qrewfgfshsgfda";
if ([str rangeOfString:@"a"].location == NSNotFound) {
NSLog(@"str 中 不包含 a");
}
```
- 判断两对象值的大小(按字母顺序升序进行比较,如:a大于b为真)
```
NSString *str = @"a";
NSString *str1 = @"b";
if ([str compare:str1] == NSOrderedAscending) {
NSLog(@"%@大于%@",str,str1);
}
```
- 判断两对象值的大小(按字母顺序倒序进行比较,如:c大于b为真)
```
NSString *str = @"c";
NSString *str1 = @"b";
if ([str compare:str1] == NSOrderedDescending) {
NSLog(@"%@大于%@",str,str1);
}
```
### 3. 字符串转大写/小写/首字母大写
```
NSString *str = @"this is the str";
[str uppercaseString]; // 将str转大写
[str lowercaseString]; // 将str转小写
[str capitalizedString];// 将str首字母大写
```
### 4. 字符串截取
- 从字符串的开头一直截取到指定的位置,但不包括该位置的字符
```
NSString *str = @"this is a str";
// 从字符串的开头一直截取到指定的位置,但不包括该位置的字符
NSString *str2 = [str substringToIndex:3]; // 截取后str2的值为:thi
```
- 从指定位置开始(包括指定位置的字符),截取到字符串末尾
```
NSString *str = @"this is a str";
// 以指定位置开始(包括指定位置的字符),截取到字符窜末尾
NSString *str2 = [str substringFromIndex:3]; // 截取后str2的值为:s is a str
```
- 从指定位置开始(包括指定位置的字符),截取指定长度的字符串
```
NSString *str = @"this is a str";
// 从指定位置开始(包括指定位置的字符),截取指定长度的字符串
// 第一个参数表示起始位置,第二个参数表示截取的长度
NSString *str2 = [str substringWithRange:NSMakeRange(1, 3)]; // 截取后str2的值为:his
```
### 5. 字符串拼接
- 方法一:通过 stringWithFormat 拼接
```
NSString *str = @"this is a str";
// 在str后拼接 append,生成str2
NSString *str2 = [NSString stringWithFormat:@"%@ append",str];
```
- 方法二:通过 stringByAppendingString 拼接
```
NSString *str = @"this is a str";
// 在str后拼接 append,生成str2
NSString *str2 = [str stringByAppendingString:@"apend"];
```
- 方法三:通过 stringByAppendingFormat拼接
```
NSString *str = @"this is a str";
// 在str后拼接一个Format好的字符串
NSString *str2 = [str stringByAppendingFormat:@"apend%@",str];
```
- 在字符串指定位置插入新字符串
```
// 在指定位置插入字符串,
NSMutableString *str = [NSMutableString stringWithString:@"This is a str"];
// 在字符串前面插入Hello,使用此方法必须保证 str 是可变长度的
[str insertString:@"Hello" atIndex:0 ];
```
### 6. 判断字符串是否以另一个字符串开头/结尾
```
NSString *str = @"This is a str";
[str hasPrefix:@"This"]; // 判断字符串是否以This开头
[str hasSuffix:@".txt"]; // 判断字符串是否以.txt结尾
```
### 7. 字符串扩展路径
```
NSString *Path = @"~/Documents/NSData.txt"; // 此字符串必须为~开头
// 在Path前面扩展沙盒的路径
NSString *absolutePath = [Path stringByExpandingTildeInPath];
// 去除扩展路径
[absolutePath stringByAbbreviatingWithTildeInPath];
```
### 8. 获取一个文件的扩展名
```
// path 为一个文件的完整路径
NSString *Path = @"........./NSData.txt";
NSLog(@"这个文件的扩展名是:%@",[Path pathExtension]);
```
### 9. 按照固定长度生成空字符串
```
// 按照固定长度生成空字符串
NSString *str = [NSMutableString stringWithCapacity:40];
```
### 10. 用指定字符串替换字符串中某指定位置、长度的字符串
```
// 用指定字符串替换字符串中的字符串,针对于可变字符串有效
NSMutableString *str = [NSMutableString stringWithString:@"This is a str"];
// 用That替换字符串中的This
[str replaceCharactersInRange:NSMakeRange(0, 4) withString:@"That"];
NSLog(@"替换后的str:%@",str);
```
### 11. 使用JsonKit 将字符串转成数据字典
```
NSString *response = [request responseString]; // 这是一个Json格式的字符串
NSData *data = [response dataUsingEncoding:NSUTF8StringEncoding]; // 将字符串转data
NSDictionary *dic = [data objectFromJSONData]; // 字符串转字典
```
### 12. IOS url 编码,http请求遇到汉字的时候,需要转化成UTF-8
```
// ios中http请求遇到汉字的时候,需要转化成UTF-8,用到的方法是:
NSString * encodingString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
```
### 13. IOS url 解码,将%3A%2F%2F 格式转为UTF-8
```
// 请求后,返回的数据,如何显示的是这样的格式:%3A%2F%2F,此时需要我们进行UTF-8解码,用到的方法是:
NSString *str = [model.album_name stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
```
ios 最全的常用字符串操作