我正在寻找一种方法来替换 NSString 中特定索引位置的字符。
例如:
提前感谢。
例如:
myString = @"******";
我想要把第三个 "*" 替换成 "A",使得字符串看起来像这样:myString = @"**A***";
我该如何实现?提前感谢。
myString = @"******";
我想要把第三个 "*" 替换成 "A",使得字符串看起来像这样:myString = @"**A***";
我该如何实现?尝试使用以下代码:
NSString *str = @"*******";
str = [str stringByReplacingCharactersInRange:NSMakeRange(3, 1) withString:@"A"];
NSLog(@"%@",str);
实际上有两个选项;
由于NSString是只读的,您需要在NSString上调用以获取可以实际更改的NSMutableString,然后在NSMutableString上调用替换其中的字符。如果要多次更改字符串,则此方法更有效率。
NSString还有一个方法,它返回一个将字符替换的新NSString。这对于单个更改可能更有效率,但需要为每次替换创建一个新的NSString。
试试这个示例方法
-(NSString *)string:(NSString*)string ByReplacingACharacterAtIndex:(int)i byCharacter:(NSString*)StringContainingAChar{
return [string stringByReplacingCharactersInRange:NSMakeRange(i, 1) withString:StringContainingAChar];
}
[self string:yourString ByReplacingACharacterAtIndex:0 byCharacter:@"*"]
运行并前往
char *str = (char *)[myString UTF8String];
str[2] = 'A';
myString = [NSString stringWithUTF8String:str];
在执行此操作之前,您应该确信myString至少有3个字符。除此之外,这是一种非常快速和高效的方法来执行类似的操作。
我通过一个Swift扩展做出了贡献:
extension NSString{
func replacingACharacterAtIndex(pIndex : Int, pChar : Character) -> NSString{
return self.stringByReplacingCharactersInRange(NSRange(location: pIndex, length: 1), withString: String(pChar))
}
}