NSString和NSMutableString两个类最主要的区别是NSString类的字符串对象,在创建赋值后不能动态修改长度和内容,除非重新赋值。而NSMutableString类似于链表,在创建赋值后可以进行修改长度、插入、删除等操作。
NSString
// NSString 创建、初始化
NSString *str = @"Hello World";
+(instancetype)stringWithFormat:(NSString *)format, ... ;
NSString *format = [NSString stringWithFormat:@"Date %d-%d-%d" :2021,03,20];
+(nullable instancetype)stringWithUTF8String:(const char *)nullTreminatedCString;
NSStrring *utf8string = [NSString stringWithUTF8String:"UTF8 Hello World"];
-(instancetype)InitWithString:(NSString *)format, ... ;
NSString initstring = [[NSString alloc] initWithFormat: @"Hello"];
-(instancetype)InitWithUTF8String:(const char *)nullTreminatedCString;
NSString i8string = [[NSString alloc] initWithUTF8String:"Init Hello World"];
-(BOOL)isRqualToString:(NSString *) string; // 字符串比较
-(BOOL)containsString:(NSString *) string; // 字符串包含
-(BOOL)hasPrefix:(NSString *) string; // 字符串前缀
-(BOOL)hasSuffix:(NSString *) string; // 字符串后缀
-(NSString *)subStringFromIndex:(NSInteger) fromNum; // 后段字符串截取
-(NSString *)subStringToIndex:(NSInteger) toNum; // 前段字符串截取
-(NSString *)SubStringWithRange:(NSRange) range; //
NSString str1 = @"hello World";
NSString str2 = [[NSString alloc] initWithUTF8String: "Happy New Year"];
-(NSString *)capitalizedString // 字符串首字母大写
-(NSString *)lowercaseString // 字符串小写
-(NSString *)uppercaseString // 字符串大写
NSLog(@"%c", [str1 characterAtIndex:3]) // 打印索引字符
if(str1 isEqualToString str2) {
NSLog(@"str1 与 str2 相等");
}
if ([str1 containsString:@"Hello"]) {
NSLog(@"contain");
}
if ([str2 hasPrefix:@"Hello"]) {
NSLog(@"hasPrefix");
}
NSString *subStr1 = [str1 subStringFromIndex:5];
NSString *subStr2 = [str2 subStringToIndex:9];
NSRange range = NSMakeRange(5, 5); // 从第5位开始截取,截取5位。
*subStr3 = [str2 subStringWithRange:range];
-(NSComparator*)caseIntensitiveCompare:string // 例如,NSComparator *compareResult = [S1 caseInsensitiveCompare:S2]; NSOrderedAscend / NSOrderedSame / NSOrderedDescend
-(NSComparator*)compare:string //和上面的caseInsensitiveCompare:不同,这个方法考虑大小写
NSMutableString
NSMutableString是继承自NSString类的,所以NSString中定义的所有方法NSMutableString都可以使用。
// NSMutableString 创建、初始化
// stringWithCapacity: 需要指定初始化时预留的可供存储的字符串最大长度
NSMutableString *mStr1 = [NSMutableString stringWithCapacity:100];
// initWithCapacity: 需要指定初始化时预留的可供存储的字符串最大长度
NSMutableString *mStr2 = [[NSMutableString alloc] initWithCapacity:100];
// stringWithString:
NSMutableString *mStr3 = [NSMutableString stringWithString:@"Hello World"];
/
-(void)setString:(NSString *)string;
-(void)appendString:(NSString *)string;
-(void)insertString:(NSString *)string : (NSInteger)atIndex;
NSMutableString *mString = [NSMutableString stringWithCapacity:100];
//
[mstring setString:@"www.csdn.com"];
[mstring appendString:@"博客"];
[mstring insertString:@"欢迎访问" atIndex:0];
NSMutableString *mString = [NSMutableString stringWithString:@"www.csdn.com"];
NSRange range = NSMakeRange(4,5);
// 字符串替换
-(void)replaceCharactersInRange:(NSRange)range :withString (NSString *)string;
[mString replaceCharactersInRange:range withString:@"blog"];
// 替换
-(void)replaceOccurencesOfString:(NSString *)rString :withString (NSString *)string;
// 字符串删除
-(void)deleteCharactersInRange:(NSRange)range;
[mString deleteCharactersInRange:range];
// 字符串拼接
-(NSString *)stringByAppendingString:(NSString *)string;
NSString *mNewString = [mString stringByAppendingString:@"blog"];
// 判断一个字符串是否在另一个字符串中
if ([mstr1 rangeOfString:mstr2].location != NSNotFound) {
NSLog(@"str2 在 str1 中");
}
// 去除字符串两端的空格
[mstr1 stringByTrimmingCharactersInSet:[NSCgaracterSet whitespaceAndNewlineCharacterSet]];
// 去除回车
[mstr1 stringByTrimmingCharactersInSet:[NSCgaracterSet whitespaceCharacterSet]];