我有一个包含10个字符的NSString。我需要添加一个破折号 - 在角色位置4和8.最有效的方法是什么?感谢
答案 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
创建的,你拥有内存并负责在将来某个时候发布它。