stringByReplacingCharactersInRange减少NSString长度

时间:2012-08-09 03:31:19

标签: iphone objective-c xcode ipad nsstring

我在某种程度上错误地使用了stringByReplacingCharactersInRange,但我无法理解。我的目标是将NSString中的一个字符替换为另一个字符。我做了很多次,但经过两次更换后,它从NSString的末尾开始切割,我不想这样做。这是我的代码。

    NSRange firstCharRange = NSMakeRange(mi, mi); // mi is an int, indicating the index of the replaced char

    myword = [myword stringByReplacingCharactersInRange:firstCharRange withString:bb.titleLabel.text]; // myword is the string

最初,myword是@“RRRRRRRR”,在替换第一个字符串后变为

eRRRRRRR

然后

egRRRRRR

然后

eghRRRR // why did cut off the last character?

2 个答案:

答案 0 :(得分:5)

NSMakeRange()的第二个参数是长度,而不是结束索引。您可能只想传递1

答案 1 :(得分:0)

NSString * str = @“Hardeep_Singh”;

NSLog(@"Before = %@",str);

str = [str stringByReplacingOccurrencesOfString:@"_" withString:@" "];

NSLog(@"After = %@",str);

你可以使用它。在这里我们可以用一个NSString的另一个字符替换一个字符。 可能对你有帮助。

NSString *myword=[NSString stringWithString:@"0123456789"];

NSLog(@"Before = %@ ",myword);

NSRange firstCharRange = NSMakeRange(1,2); 

// Frist参数是起始点,第二个是终点,它是0的星形,依此类推。

myword = [myword stringByReplacingCharactersInRange:firstCharRange withString:@"H"];

NSLog(@"After = %@ ",myword);

这可能是你的理由。