Я ищу способ заменить символ в определенном индексе NSString.
Например: myString = @"******";
Я хочу заменить третий "*" на "A", чтобы строка выглядела так: myString = @"**A***";
Как я могу это достичь?
Заранее спасибо
Я ищу способ заменить символ в определенном индексе NSString.
Например: myString = @"******";
Я хочу заменить третий "*" на "A", чтобы строка выглядела так: myString = @"**A***";
Как я могу это достичь?
Заранее спасибо
Попробуйте следующее:
NSString *str = @"*******";
str = [str stringByReplacingCharactersInRange:NSMakeRange(3, 1) withString:@"A"];
NSLog(@"%@",str);
Есть два варианта:
Так как NSString доступен только для чтения, вам нужно вызвать mutableCopy
в NSString, чтобы получить NSMutableString, который можно фактически изменить, а затем вызвать replaceCharactersInRange:withString:
в NSMutableString, чтобы заменить символы в нем. Это более эффективно, если вы хотите изменить строку более одного раза.
Существует также метод stringByReplacingCharactersInRange:withString:
в NSString, который возвращает новую NSString с замененными символами. Это может быть более эффективным для одного изменения, но требует, чтобы вы создали новую NSString для каждой замены.
Попробуйте этот примерный метод
-(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
Если вы не против использовать немного C, используйте что-то вроде этого:
char *str = (char *)[myString UTF8String];
str[2] = 'A';
myString = [NSString stringWithUTF8String:str];
Конечно, вы должны быть абсолютно уверены, что myString имеет как минимум 3 символа, прежде чем делать это. Помимо этого, это очень быстрый и эффективный способ сделать что-то вроде этого.
Мой вклад с быстрым расширением ответа:
extension NSString{
func replacingACharacterAtIndex(pIndex : Int, pChar : Character) -> NSString{
return self.stringByReplacingCharactersInRange(NSRange(location: pIndex, length: 1), withString: String(pChar))
}
}