我正在寻找一种方法来替换NSString的某个索引处的字符。
例如:myString = @"******";
我想用“A”替换第3个“*”,以便字符串如下所示:myString = @"**A***";
我怎样才能做到这一点?
提前致谢
答案 0 :(得分:29)
试试这个:
NSString *str = @"*******";
str = [str stringByReplacingCharactersInRange:NSMakeRange(3, 1) withString:@"A"];
NSLog(@"%@",str);
答案 1 :(得分:18)
实际上有两种选择;
由于NSString是只读的,因此需要在NSString上调用mutableCopy
以获取实际可以更改的NSMutableString,然后在NSMutableString上调用replaceCharactersInRange:withString:
来替换其中的字符。如果您想多次更改字符串,这会更有效。
NSString上还有一个stringByReplacingCharactersInRange:withString:
方法,它返回一个替换了字符的新NSString。对于单个更改,这可能更有效,但需要您为每个替换创建一个新的NSString。
答案 2 :(得分:4)
试试这个示例方法
-(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:@"*"]
跑步和跑步
答案 3 :(得分:1)
如果您不介意使用小C,请使用以下内容:
char *str = (char *)[myString UTF8String];
str[2] = 'A';
myString = [NSString stringWithUTF8String:str];
当然,在执行此操作之前,您应该完全确定myString至少包含3个字符。除此之外,这是一种非常快速有效的方式来做这样的事情。
答案 4 :(得分:0)
我对回复的快速延伸做出了贡献:
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "My custom extensions (*.extension)|*.extension";
openFileDialog1.FilterIndex = 1;