Подтвердить что ты не робот

Заменить символ с определенным индексом в NSString

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

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

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

Как я могу это достичь?

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

4b9b3361

Ответ 1

Попробуйте следующее:

NSString *str = @"*******";
str = [str stringByReplacingCharactersInRange:NSMakeRange(3, 1) withString:@"A"];
NSLog(@"%@",str);

Ответ 2

Есть два варианта:

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

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

Ответ 3

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

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

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

}

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

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

Run и Go

Ответ 4

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

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

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

Ответ 5

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

extension NSString{

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

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