Манипулирование строками в Objective-C - PullRequest
2 голосов
/ 05 декабря 2010

У меня есть NSString с 10 символами. Мне нужно добавить тире - в позиции символов 4 и 8. Какой самый эффективный способ сделать это? спасибо

Ответы [ 3 ]

12 голосов
/ 05 декабря 2010

Вам нужна изменяемая строка, а не строка NSString.

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

Исправлен код, основанный на ответе stko , который не содержит ошибок.

6 голосов
/ 05 декабря 2010

Вы должны позаботиться о том, чтобы сначала вставить черту с самым высоким индексом. Если вы сначала вставляете индекс 4, вам нужно вставить индекс 9 вместо 8 для второго тире.

например. Это не дает желаемой строки ...

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"
0 голосов
/ 06 декабря 2010

Вот немного другой способ сделать это - получить изменяемую копию вашей оригинальной строки NSString.

NSMutableString *newString = [originalString mutableCopy];

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

Поскольку вы используете iPhone - важно отметить, что, поскольку newString создан с mutableCopy, вы владеете памятью и несете ответственность за ее освобождение в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...