将N个第一个字符从NSString复制到NSMutableString

时间:2013-12-02 21:50:09

标签: ios objective-c nsstring

我有NS长度的项目标题,长度为

我只想将N(N< X)复制到我的NSMutable字符串

我所尝试的是:

     NSMutableString* title = [[NSMutableString alloc]initWithCapacity:10];//10 =N
     [title appendString:itemTitle];

但遗憾的是,它按原样复制了所有NSString :(

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:2)

NSMutableString *title = [NSMutableString stringWithString: [itemTitle substringToIndex: MIN(itemTitle.length, 10)]];

答案 1 :(得分:1)

NSMutableString的容量是初始容量,而不是最终容量。当对象需要更多空间时,它会分配更多内存,忽略您传入的容量。

为了避免字符串太长,你可以在追加之前获得N个字符的子字符串,或者在append方法完成后删除多余的字符:

NSMutableString* title = [[itemTitle substringWithRange:NSMakeRange(0, 10)] mutableCopy];

 NSMutableString* title = [NSMutableString string];//10 =N
 [title appendString:itemTitle];
 [title deleteCharactersInRange:NSMakeRange(10, title.length)];

注意:在使用这两个代码段中的任何一个之前,您需要检查itemTitle是否确实超过十个字符。