Добавить символ к существующей строке Objective - C - PullRequest
4 голосов
/ 19 апреля 2011

Я пытаюсь добавить и программно изменить строку NSSt на лету. Я хотел бы знать пару вещей:

  • Как мне изменить определенные символы в определенной строке NSString?
  • Как добавить символы в определенной строке NSString?

Например, если я определил следующее: NSString *word = [[NSString alloc] initWithString:@"Hello"]; как я смогу заменить букву "e" на "a", а также как добавить еще один символ к самой строке?

Ответы [ 4 ]

7 голосов
/ 19 апреля 2011

Nerver используйте NSString для работы со строками, используйте NSMutableString.NSMutableString является подклассом NSString и используется для этой цели.

Из документации Apple:

Класс NSString объявляет программный интерфейс для объекта, который управляет неизменяемыми строками. (Неизменная строка - это текстовая строка, которая определяется при ее создании и впоследствии не может быть изменена. NSString реализована для представления массива символов Юникода (другими словами, текстовой строки).

Изменяемый подкласс NSString - NSMutableString.

NSMutableString *word = [[NSMutableString alloc] initWithString:@"Hello"];
//Replace a character 
NSString*  word2 = [word stringByReplacingOccurrencesOfString:@"e" withString:@"a"];

[word release];
word = nil ;

word = [[NSMutableString alloc] initWithString:word2 ];
//Append a Character
[word appendString:@"a"];

Имеется больше функций для работы со строками. См. Документацию Apple для NSMutableString

Отредактировано:

Вы могли бы сначала использовать rangeOfString, чтобы получить диапазон строки (в вашем случае @ "e").

- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask

, затем проверить объект NSRange, еслиэто верно, затем используйте функцию replaceCharactersInRange на вашем NSMutableString, чтобы заменить набор символов вашей строкой.

- (void)replaceCharactersInRange:(NSRange)aRange withString:(NSString *)aString
5 голосов
/ 19 апреля 2011

NSString экземпляры являются неизменяемыми. Вы можете создавать новые экземпляры NSString, добавляя или заменяя символы в другом, например так:

NSString *foo = @"Foo";
NSString *bar = @"Bar";

NSString *foobar = [foo stringByAppendingString:bar];
NSString *baz = [bar stringByReplacingOccurrencesOfString:@"r" withString:@"z"];

Если вам действительно нужно изменить экземпляр напрямую, вы можете использовать NSMutableString вместо NSString.

Если вы действительно хотите использовать примитивные символы, в NSString есть пара инициализаторов, которые могут принимать массивы символов (например, initWithCharacters:length:).

2 голосов
/ 19 апреля 2011

Просто добавьте, NSMutableString имеет метод с именем appendFormat, который может быть очень полезен при добавлении материала:

[str appendFormat:@"%@-%@-%@", @"1", @"2",@"3"]

добавит "1-2-3" к str

2 голосов
/ 19 апреля 2011

Перво-наперво:

Если вы собираетесь изменить строку, вы должны использовать NSMutableString.NSStrings не могут быть изменены, поэтому они имеют изменяемый компаньон.

Тогда NSMutableString имеет два метода, которые вы найдете полезными:

replaceCharactersInRange: withString deleteCharactersInRange:

(Извините, что не связывался напрямую со ссылками этого метода. StackOverflow, если всегда накладывал ограничения на меня как нового пользователя ...).

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