Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重新给这个字符串赋值。而NSMutableString 创建赋值以后可以动态在该字符串上更改内容与长度。
创建NSString字符串:
NSString 与 char* 最大的区别就是 NSString是一个objective对象,而char* 是一个字节数组。@+ " 字符串 " 这个符号为objective-c NSString 字符串常量的标准用法,char* 创建的时候 无需添加@
// 创建字符串 NSString *str = @"jack"; NSString *s1 = [[NSString alloc] initWithFormat:@"age = %d" ,10]; // c字符串转oc字符串 NSString *s2 = [[NSString alloc] initWithUTF8String:"jack"]; // oc 转 c const char *c1 = [s2 UTF8String]; NSLog(@"%s", c1);
字符串的遍历
NSString *str = @"ni hao peng you"; for (int i = 0; i < str.length; i++) { unichar c = [str characterAtIndex:i]; NSLog(@"%c",c); }
NSURL
// NSUTF8StringEncoding 用到中文可以用这个 // 传进来文件路径可以查看文件 NSString *s3 = [[NSString alloc] initWithContentsOfFile:"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil]; /*URL :资源路径 协议头://路径 file:// ftp:// http://www.baidu.com */ // 在 iOS 程序访问 HTTP 资源时需要对 URL 进行 Encode // NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/apple/Desktop/1.txt"]; NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/1.txt"]; NSString *s4 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; NSLog(@"s4=\n%@", s4);
NSString :不可变字符串
NSMutableString :可变字符串
字符串中拼接
// 创建字符串 NSMutableString *s = [NSMutableString stringWithFormat:@"my age is 23"]; // 拼接内容到s的后面 [s appendString:@" 3 21"];
字符串中删除元素
stringWithString 方法:用于创建字符串初始化赋值
rangeOfString方法:传入字符串返回一个在该字符串中的范围 也可以写 NSMakeRange(0, 3) 意思是范围在字符串0位到第3位
deleteCharactersInRange:删除字符串 参数为Range 就是删除的范围。
//创建字符串 NSMutableString *str = [NSMutableString stringWithString:@"haha 你好!!"]; //删除字符串中含"haha"的字符 [str deleteCharactersInRange: [str rangeOfString: @"haha"]]; NSLog(@"str = %@",str);
字符串查找
查找一个字符串在另一个字符串首次出现的位置
NSString *s = @"abciOSdefg"; NSString *s1 = @"iOS"; NSRange * range = [s rangeOfString:s1]; // 判断是否找到字符串 if(range.location!NSNotFound){ NSLog(@"%lu,%lu",range,location, range.length); }else{ NSLog(@"没有找到字符串位置"); }
判断字符串是否相同
// 字符串是否相同 NSString *s1 = @"abc"; NSString *s2 = [NSString stringWithFormat:@"abc"]; if ([s1 isEqualToString:s2]) { NSLog(@"相同"); }else{ NSLog(@"不相同"); }
字符串截取
NSString *str = @"012345678"; // 从元素下标为3的位置开始往后截取,(包含下标为3的位置的元素) NSString *str1 = [str substringFromIndex:3]; NSLog(@"str1 = %@",str1); // 从开始位置截取到3位(不包含下标为3的位置的元素) NSString *str2 = [str substringToIndex:3]; NSLog(@"str2 = %@",str2); // 截取某段位置的字符进行输出 NSRange range ={2,3}; NSString *str3 = [str substringWithRange:range]; NSLog(@"str3 = %@",str3);
// 截取某段位置的字符 // 012345 789 NSString *str = @"aaaaa<你好>aaaaaa"; NSUInteger loc = [str rangeOfString:@"<"].location + 1; // 传的位置 NSUInteger len = [str rangeOfString:@">"].location - loc; // 要截取的字符长度 NSRange r1 = {loc, len}; NSString *subStr = [str substringWithRange:r1]; NSLog(@"subStr = %@", subStr);
字符串的替换
// 字符串的替换 NSString *str = @"adadwffdtoiajdfa"; // str stringByReplacingOccurrencesOfString:@"源字符串" withString:@"要替换成的新内容" // 把a替换成/ NSString * newStr = [str stringByReplacingOccurrencesOfString:@"a" withString:@"/"]; NSLog(@"newStr = %@", str); // 把字符串中的空格去掉 str = @" adad wff dt oiaj df a"; newStr = [str stringByReplacingOccurrencesOfString:@" " withString:@""]; NSLog(@"newStr = %@", newStr); // 把字符串中空格去掉,把星号替换成/ str = @"http ** www* baidu* com*"; newStr = [str stringByReplacingOccurrencesOfString:@" " withString:@""]; NSString *newStr1 = [newStr stringByReplacingOccurrencesOfString:@"*" withString:@"/"]; NSLog(@"newStr1 = %@",newStr1);