0

我有一个 NSMutableString 包含字符串“我有 ∞ 小时和 ∞ 分钟空闲”。我正在尝试用“0”替换第一个∞

NSMutableString *timeString = [NSMutableString stringWithString:@"And I have ∞ Hours and ∞ Min to spare."];
NSLog(@"%@",timeString);
[timeString replaceCharactersInRange:NSMakeRange(11,12) withString:@"0"];
NSLog(@"%@",timeString);

但是,它不仅替换了第一个 ∞,还替换了短语“∞ Hours and”

以下是控制台中打印的内容:

And I have ∞ Hours and ∞ Min to spare.
And I have 0∞ Min to spare.

我不明白为什么它会删除超出指定范围的字符。

4

4 回答 4

5

范围的第二个参数是长度,而不是结束位置,所以如果你想替换 1 个字符,你应该在那里传递 1。

于 2013-11-11T16:10:18.467 回答
5

范围由(位置,长度)组成

您是说从 11 开始并从那里跨越 12 个字符。您实际上是在 11 到 22 范围内。

你需要:

NSMakeRange(11,1)
于 2013-11-11T16:10:26.230 回答
4

第二个值NSMakeRange是范围的长度,而不是结束的位置。

尝试

NSMakeRange(11,1)
于 2013-11-11T16:10:34.290 回答
1

像这样做 ..!

NSMutableString *timeString = [NSMutableString stringWithString:@"And I have ∞ Hours and ∞ Min to spare."];

NSRange range = [timeString rangeOfString:@"∞"];
if (range.location != NSNotFound)
{
[timeString replaceCharactersInRange:range withString:@"0"];
}
于 2013-11-11T16:41:45.693 回答