我有一个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);
然而,它不是仅替换第一个∞,而是替换短语“∞小时和”
以下是在控制台中打印的内容:
And I have ∞ Hours and ∞ Min to spare.
And I have 0∞ Min to spare.
我不明白为什么删除超出指定范围的字符。
答案 0 :(得分:5)
范围的第二个参数是长度,而不是结束位置,因此如果您尝试替换1个字符,则应该在那里传递1。
答案 1 :(得分:5)
范围由(位置,长度)
组成你说的是从11开始,从那里开始跨越12个字符。 你;有效地制作11到22的范围。
你需要:
NSMakeRange(11,1)
答案 2 :(得分:4)
NSMakeRange
中的第二个值是范围的长度,而不是结尾的位置。
尝试
NSMakeRange(11,1)
答案 3 :(得分: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"];
}