替换NSString中某个索引处的字符

时间:2012-01-21 12:43:18

标签: iphone objective-c xcode replace nsstring

我正在寻找一种方法来替换NSString的某个索引处的字符。

例如:myString = @"******";

我想用“A”替换第3个“*”,以便字符串如下所示:myString = @"**A***";

我怎样才能做到这一点?

提前致谢

5 个答案:

答案 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;