在Objective-C中操作字符串

时间:2010-12-05 10:19:17

标签: iphone objective-c cocoa-touch nsstring

我有一个包含10个字符的NSString。我需要添加一个破折号 - 在角色位置4和8.最有效的方法是什么?感谢

3 个答案:

答案 0 :(得分:12)

你需要一个可变的字符串,而不是NSString。

NSMutableString *str = [NSMutableString stringWithString:old_string];
[str insertString:@"-" atIndex:8];
[str insertString:@"-" atIndex:4];

修正了基于stko答案的代码,该代码无错误。

答案 1 :(得分:6)

您应该首先在最高索引处插入破折号。如果首先在索引4处插入,则需要在索引9处插入而不是在第二个破折号处插入8。

e.g。这不会产生所需的字符串......

NSMutableString *s = [NSMutableString stringWithString:@"abcdefghij"];

[s insertString:@"-" atIndex:4];  // s is now @"abcd-efghij"
[s insertString:@"-" atIndex:8];  // s is now @"abcd-efg-hij"

虽然这个:

NSMutableString *s = [NSMutableString stringWithString:@"abcdefghij"];

[s insertString:@"-" atIndex:8];  // s is now @"abcdefgh-ij"
[s insertString:@"-" atIndex:4];  // s is now @"abcd-efgh-ij"

答案 2 :(得分:0)

这是一种稍微不同的方式 - 这是获取原始NSString的可变副本。

NSMutableString *newString = [originalString mutableCopy];

[newString insertString:@"-" atIndex:8];
[newString insertString:@"-" atIndex:4];

由于你在iPhone上 - 重要的是要注意,因为newString是用mutableCopy创建的,你拥有内存并负责在将来某个时候发布它。