iOS开发过程中,从始至终都会和NSString打交道,在此总结一下NSString的常用的方法,在以后的学习过程中用到的方法也会继续添加
NSString类是Foundation框架中得不可变字符串,当NSString创建完成后,字符串的内容不可更改,与之对应的是NSMutableString类
一、NSString对象的创建
1.使用类方法(stringWithFormat:)进行字符串创建,此方法可以动态的构建字符串,并且能够给字符串传递参数(推荐)
1 NSString* str = [NSString stringWithFormat:@"曾经我打听过,你最近的生活 %@", @"love you"]; 2 NSLog(@"%@", str);
2.其他创建方法
1 // 把C字符串转成OC的字符串对象 2 char* p = "I love beijing"; 3 NSString* testStr = [[NSString alloc] initWithFormat:@"%s",p ]; 4 NSLog(@"testString = %@",testStr); 5 6 // 把OC字符串对象转成C字符串 7 const char* newP = [testStr UTF8String]; 8 NSLog(@"newp = %s",newP); 9 10 // 与格式控制字符串构建对象的实例方法对应的类方法 11 // 使用(Foundation框架里的)类方法创建的对象,由自动释放池管理内存 12 NSString* str2 = [NSString stringWithFormat:@"This is a OC sting %d",109]; 13 NSLog(@"str2 = %@",str2); 14 //============================================= 15 // 使用一个现有的字符串对象构建一个新的字符串对象 16 NSString* str = @"I'm a oc string"; 17 NSString* str3 = [[NSString alloc] initWithString:str]; 18 NSLog(@"str3 = %@",str3); 19 // 与之对应的类方法 20 NSString* str4 = [NSString stringWithString:str]; 21 NSLog(@"str4 = %@",str4); 22 23 //============================================== 24 // 使用一个C字符串构建一个OC的字符串对象 25 NSString* str5 = [[NSString alloc] initWithUTF8String:"This is a c String"]; 26 NSLog(@"str5 = %@",str5); 27 // 与之对应的类方法 28 NSString* str6 = [NSString stringWithUTF8String:"This is a c String"]; 29 NSLog(@"str6 = %@",str6); 30 31 //============================================== 32 // 使用文件内容构建一个字符串对象 33 34 NSString* filePath = @"/Users/qianfeng/Desktop/test.txt"; 35 /* 36 第一个参数:读取的文件的路径 37 第二个参数:指定编码集为NSUTF8String 38 第三个参数:用于存放读取文件过程中的错误信息 39 */ 40 NSError* error = nil; 41 NSString* str7 = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; 42 NSLog(@"str7 = %@",str7);
二、NSString常用操作
1 //获取字符串长度(length) 2 NSString* str = [NSString stringWithFormat:@"曾经我打听过,你最近的生活 %@", @"love you"]; 3 NSUInteger lenth = [str length]; 4 NSLog(@"%ld", lenth); 5 NSLog(@"%@", str); 6 //NSRange 7 /* 8 NSRange在Foundation框架中定义如下 9 typedef struct _NSRange { 10 NSUInteger location; //表示位置 11 NSUInteger length; //长度 12 } NSRange; 13 */ 14 NSString* str2 = @"忙碌工作之余是否有运动?"; 15 NSString* subString = @"忙碌"; 16 //查找子串(从0开始) 17 NSRange range = [str2 rangeOfString: subString]; 18 //打印框架内结构体的方法 19 NSLog(@"%@", NSStringFromRange(range)); 20 //使用框架创建range 21 NSRange newRange = NSMakeRange(5, 3); 22 NSString* newTemp = [str2 substringWithRange: newRange]; 23 NSLog(@"%@", newTemp); 24 //判断是否在父串中找到子串 25 if (range.location == NSNotFound) { 26 NSLog(@"Can't fount"); 27 }else{ 28 NSLog(@"Got it!"); 29 } 30 //字符串比较(大小) 31 NSString* strA = @"chengDu"; 32 NSString* strB = @"chongQing"; 33 //compare:方法的返回值类型为NSComparisonResult(枚举值),其中 34 //NSOrderedSame表示相等 NSOrderedAscending表示升序(小于) 35 //NSOrderedDescending 表示降序(大于) 36 if ([strA compare: strB] == NSOrderedSame) { 37 NSLog(@"相等"); 38 }else if([strA compare: strB] == NSOrderedAscending){ 39 NSLog(@"小于"); 40 }else{ 41 NSLog(@"大于"); 42 } 43 //字符串比较(是否相等) 44 BOOL isEqule = [strA isEqualToString: strB]; 45 NSLog(@"The result is : %d", isEqule); 46 47 //判断字符串前后缀 48 NSString *fileString = @"/Users/student/DeskTop/file.txt"; 49 //判断前缀(hasPrefix:)方法 50 BOOL isPrefix = [fileString hasPrefix:@"/Users"]; 51 //判断后缀 (hasSuffix:)方法 52 BOOL isSuffix = [fileString hasSuffix: @".txt"]; 53 NSLog(@"isPrefix = %d, isSuffix = %d", isPrefix, isSuffix); 54 //字符串转换为数字 55 /* 56 框架提供的字符串转换的方法如下: 57 - (double)doubleValue; 58 - (float)floatValue; 59 - (int)intValue; 60 - (NSInteger)integerValue NS_AVAILABLE(10_5, 2_0); 61 - (long long)longLongValue NS_AVAILABLE(10_5, 2_0); 62 - (BOOL)boolValue NS_AVAILABLE(10_5, 2_0); 63 */ 64 NSString* strToNum = @"12345.234"; 65 int result = [strToNum intValue]; 66 NSLog(@"result = %d", result);