免费开源的iOS开发学习平台

OC字符串对象:2-NSMutableString类

NSMutableString是继承自NSString类的,所以NSString中定义的所有方法NSMutableString都可以使用。与NSString相比,NSMutableString类的对象在内存中存储的空间是可以变化的,因此,存储的字符串长度和内容都可以改变。

NSMutableString的初始化

NSMutableString类的对象,可以采用如下几个方法来进行初始化。

  • stringWithCapacity:方法,需要指定初始化时预留的可供存储的字符串最大长度;
  • initWithCapacity: 方法, 需要指定初始化时预留的可供存储的字符串最大长度;
  • stringWithString: 方法, 传入一个初始化字符串。

示例:

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //实例化一个NSMutableString类型的对象
        NSMutableString *mString1 = [NSMutableString stringWithCapacity:100];
        NSMutableString *mString2 = [[NSMutableString alloc] initWithCapacity:100];
        NSMutableString *mString3 = [NSMutableString stringWithString:@"www.99ios.com"];
    }
    return 0;
}

注意:可变字符串不能使用@""进行赋值,因为使用@""创建的字符串是一个常量字符串。

NSMutableString字符串的修改

由于可变字符的特性,决定了可以对可变字符串的内容进行修改,例如插入、拼接等操作。如下代码,演示了对可变字符串进行赋值、拼接等操作。

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //实例化一个NSMutableString类型的对象
        NSMutableString *mString = [NSMutableString stringWithCapacity:100];
        //赋值
        [mString setString:@"www.99ios.com"];
        NSLog(@"%@",mString);
        //拼接
        [mString appendString:@" 九九学院"];
        NSLog(@"%@",mString);
        //在指定位置插入字符串
        [mString insertString:@"欢迎访问 " atIndex:0];
        NSLog(@"%@",mString);
    }
    return 0;
}

运行结果:

NSMutableString字符串的替换与删除

对于可变字符串,可以替换其中的一些内容,以及删除一些内容。

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //替换
        NSMutableString *mString = [NSMutableString stringWithString:@"www.99ios.com"];
        NSLog(@"原始值:%@",mString);
        NSRange range = NSMakeRange(4, 5);
        [mString replaceCharactersInRange:range withString:@"apple"];
        NSLog(@"替换后:%@",mString);
        //删除
        [mString deleteCharactersInRange:range];
        NSLog(@"删除后:%@",mString);
    }
    return 0;
}

运行结果:

连接两个字符串对象

使用stringByAppendingString方法,可以连接两个NSMutableString类型的字符串对象,并返回一个NSString类型的字符串。

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //连接两个字符串对象
        NSMutableString *mString1 = [NSMutableString stringWithString:@"www.99ios.com"];
        NSMutableString *mString2 = [NSMutableString stringWithString:@" 九九学院"];
        NSString *mNewString = [mString1 stringByAppendingString:mString2];
        NSLog(@"合并后的字符串:%@",mNewString);
    }
    return 0;
}

运行结果:

示例代码

https://github.com/99ios/4.2.2