【发布时间】:2013-08-31 20:40:24
【问题描述】:
我想要一个函数,它可以从字符串中删除一组随机字符并将它们替换为“_”。例如。创造一种填空式的情况。我现在拥有它的方式有效,但它并不聪明。此外,我不想用空格替换空格(正如您在 while 循环中看到的那样)。对更有效的方法有什么建议吗?
blankItem = @"Remove Some Characters";
for(int j=0;j<totalRemove;j++)
{
replaceLocation=arc4random() % blankItem.length;
while ([blankItem characterAtIndex:replaceLocation] == '_' || [blankItem characterAtIndex:replaceLocation] == ' ') {
replaceLocation=arc4random() % blankItem.length;
}
blankItem= [blankItem stringByReplacingCharactersInRange:NSMakeRange(replaceLocation, 1) withString:@"_"];
}
我的问题在于效率方面的 for 和 while 循环。但是,对于这么小的事情,效率可能不是最重要的吗?
【问题讨论】:
-
blankItem= (NSMutableString *)[blankItem …似乎表明你相信强制转换会神奇地改变对象的类。幸运的是,您并没有真正使用blankItem是可变字符串这一事实,因为您在每次迭代时都分配了一个新字符串。 -
replaceLocation=arc4random() % blankItem.length;->replaceLocation = arc4random_uniform(blankItem.length); -
警告,只有_和空格的字符串会导致无限循环。
标签: objective-c cocoa-touch nsstring