Заменить символ с определенным индексом в NSString - PullRequest
17 голосов
/ 21 января 2012

Я ищу способ заменить символ по определенному индексу NSString.

Например: myString = @"******";

Я хочу заменить третье "*" на "A", чтобы строка выглядела так: myString = @"**A***";

Как мне этого добиться?

Заранее спасибо

Ответы [ 5 ]

29 голосов
/ 21 января 2012

Попробуйте с этим:

NSString *str = @"*******";
str = [str stringByReplacingCharactersInRange:NSMakeRange(3, 1) withString:@"A"];
NSLog(@"%@",str);
18 голосов
/ 21 января 2012

На самом деле есть два варианта;

Поскольку NSString доступен только для чтения, вам нужно вызвать mutableCopy для NSString, чтобы получить NSMutableString, которая может быть фактически изменена, затем вызвать replaceCharactersInRange:withString: для NSMutableString, чтобы заменить символы в ней. Это более эффективно, если вы хотите изменить строку более одного раза.

Существует также метод stringByReplacingCharactersInRange:withString: для NSString, который возвращает новую строку NSString с замененными символами. Это может быть более эффективным для одного изменения, но требует создания новой строки NSSt для каждой замены.

4 голосов
/ 21 июля 2014

Попробуйте этот пример метода

-(NSString *)string:(NSString*)string ByReplacingACharacterAtIndex:(int)i byCharacter:(NSString*)StringContainingAChar{

    return [string stringByReplacingCharactersInRange:NSMakeRange(i, 1) withString:StringContainingAChar];

}

, если ваша строка "test" и вы хотите, чтобы первый символ "t" был заменен на "*", чем вызов метода

[self string:yourString ByReplacingACharacterAtIndex:0 byCharacter:@"*"]

Беги и иди

1 голос
/ 15 ноября 2013

Если вы не возражаете против использования небольшого C, используйте что-то вроде этого:

char *str = (char *)[myString UTF8String];
str[2] = 'A';
myString = [NSString stringWithUTF8String:str];

Конечно, вы должны быть абсолютно уверены, что myString имеет по крайней мере 3 символа, прежде чем делать это.Кроме того, это очень быстрый и эффективный способ сделать что-то подобное.

0 голосов
/ 12 апреля 2016

Мой вклад с быстрым расширением из ответа:

extension NSString{

    func replacingACharacterAtIndex(pIndex : Int, pChar : Character) -> NSString{

        return self.stringByReplacingCharactersInRange(NSRange(location: pIndex, length: 1), withString: String(pChar))
    }
}
...