本文共 4413 字,大约阅读时间需要 14 分钟。
OCString和CString的区别及NSString的使用方法
在Objective-C开发中,字符串的处理是非常常见的操作。OCString、CString以及NSString作为三种不同的字符串类型,各自有其特点和使用场景。本文将深入探讨这三者的区别,并详细讲解NSString的使用方法。
一、OCString和CString的区别
OCString(Objective-C String)和CString(C String)是Objective-C开发中两种不同的字符串类型。OCString是Objective-C对字符串的封装,支持丰富的方法操作,而CString则是C语言中的字符串类型,主要用于底层操作。
OCString的创建 OCString可以通过alloc创建: NSString *tempString = [NSString alloc]; // 或者更常用的方式: NSString *tempString = @"hello"; NSLog(@"tempString is %@", tempString);
CString的创建 C语言的字符串在Objective-C中通常通过NSString来处理。要使用C语言字符串,可以使用initWithCString方法: NSString *string2 = [[NSString alloc] initWithCString:"i am pig" encoding:NSUTF8StringEncoding]; NSLog(@"string2 is %@", string2);
字符串的格式化赋值 使用format方法可以实现字符串的格式化拼接: NSString *string3 = [[NSString alloc] initWithFormat:@"%@ %@", @"i am", tempString]; NSLog(@"string3 is %@", string3); NSString *string4 = [[NSString alloc] initWithFormat:@"%@", @"我是好人"]; NSLog(@"string4 is %@", string4);
二、NSString的所有方法
A. 使用类方法创建OC字符串
直接赋值 NSString *tempString = @"hello"; NSString *string5 = [NSString stringWithString:tempString]; NSLog(@"string5 is %@", string5);
使用C语言字符串赋值 NSString *string6 = [NSString stringWithCString:"我爱你" encoding:NSUTF8StringEncoding]; NSLog(@"string6 is %@", string6); NSString *string7 = [NSString stringWithFormat:@"我是%@", @"猪"]; NSLog(@"string7 is %@", string7);
B. 字符串的拼接
使用format方法拼接 NSString *string8 = @"你好"; NSString *string9 = @"北京"; NSString *catString = [NSString stringWithFormat:@"%@,%@", string8, string9]; NSLog(@"catString is %@", catString); 使用append和stringByAppending方法 NSString *catSecondString = [catString stringByAppendingString:@"我来了"]; NSLog(@"catSecondString is %@", catSecondString); C. 字符串长度 获取字符串的长度: NSInteger stringLength = [aString length]; NSLog(@"aString 的长度是 %lu", stringLength);
D. 判断字符串是否相等 使用isEqualToString方法比较两个字符串: NSString *first = @"我2"; NSString *second = @"我2"; BOOL isEqual = [first isEqualToString:second]; NSLog(@"%d", isEqual);
E. 字符串比较
常规比较 int result = [string1 compare:string2]; NSLog(@"%d", result); 不区分大小写的比较 int result = [str1 compare:str2 options:NSCaseInsensitiveSearch]; NSLog(@"%d", result); F. 大小写转换
转大写 NSString *str1 = @"abcd"; NSString *upperStr = [str1 uppercaseString]; NSLog(@"upper is %@", upperStr); 转小写 NSString *str2 = @"ABCD"; NSString *lowerStr = [str2 lowercaseString]; NSLog(@"lower is %@", lowerStr); 首字母大写 NSString *str3 = @"sAfdnl"; NSString *capStr = [str3 capitalizedString]; NSLog(@"cap is %@", capStr); G. 字符串查找
查找"大好人" NSRange range = [str rangeOfString:@"大好人"]; if (range.location == NSNotFound) { NSLog(@"没找着"); } else { NSLog(@"location is %d, length is %d", range.location, range.length); } 从后向前查找 NSRange range1 = [str rangeOfString:@"大好人" options:NSBackwardsSearch]; NSLog(@"location is %d, length is %d", range1.location, range1.length); 判断前缀和后缀 - 前缀检查 BOOL isHave21 = [str hasPrefix:@"12"]; if (isHave21) { NSLog(@"你赢了"); } else { NSLog(@"你输了"); }
- 后缀检查 BOOL isHave09 = [str hasSuffix:@"90"]; if (isHave09) { NSLog(@"找到了"); } else { NSLog(@"木有怎么办"); }
H. 字符串提取
从头截取 NSString *topStr = [str substringToIndex:4]; NSLog(@"topStr is %@", topStr); 从某一位置截取到末尾 NSString *endStr = [str substringFromIndex:8]; NSLog(@"endStr is %@", endStr); 截取特定范围 NSRange range = [str rangeOfString:@"1234"]; if (range.location == NSNotFound) { NSLog(@"什么也不干"); } else { NSString *finalStr = [str substringWithRange:range]; NSLog(@"finalStr is %@", finalStr); } 三、NSMutableString的所有方法
NSMutableString是Objective-C中可变字符串的实现,它支持通过append、insert、delete等方法进行操作。由于NSMutableString是可变的,建议通过这些方法进行操作,而不是直接赋值。
创建可变字符串 // alloc创建 NSMutableString *mutableStr = [[NSMutableString alloc] initWithCapacity:0]; // 类方法创建 NSMutableString *mutableStrClass = [NSMutableString stringWithCapacity:0];
增加内容
- 直接添加 [mutableStr appendString:@"123"]; NSLog(@"mutableStr after append: %@", mutableStr);
- 格式化添加 [mutableStr appendFormat:@"%d", 11]; NSLog(@"mutableStr after appendFormat: %@", mutableStr);
- 插入特定位置 [mutableStr insertString:@"我" atIndex:3]; NSLog(@"mutableStr after insert: %@", mutableStr);
- 删除内容
- 删除区间 [mutableStr deleteCharactersInRange:NSMakeRange(2, 3)]; NSLog(@"mutableStr after delete: %@", mutableStr);
- 修改内容
- 全改 [mutableStr setString:@"abcdefg"]; NSLog(@"mutableStr after setString: %@", mutableStr);
- 替换区间内容 [mutableStr replaceCharactersInRange:NSMakeRange(3, 2) withString:@"一二三四"]; NSLog(@"mutableStr after replace: %@", mutableStr);
通过以上方法,可以方便地进行字符串的操作和管理。在实际开发中,合理选择使用哪种字符串类型和方法,取决于具体需求和性能考虑。
转载地址:http://spsfk.baihongyu.com/