[英]How can I optimize this loop?
我有一段代码可以返回表示“搜索结果”的超长字符串。 每个结果都由一个双HTML中断符号表示。 例如:
结果1 <br> <br>结果2 <br> <br>结果3
我得到了下面的循环,该循环获取每个结果并将其放入数组中,以除去中断指示符“ kBreakIndicator
”(<br> <br>)。 问题在于,此中断需要太长时间才能执行。 取得几个结果就可以了,但是一旦达到一百个结果,速度就会慢20-30秒。 这是不可接受的表现。 我该怎么做才能提高性能?
这是我的代码:
content
是原始的NSString。
NSMutableArray *results = [[NSMutableArray alloc] init];
//Loop through the string of results and take each result and put it into an array
while(![content isEqualToString:@""]){
NSRange rangeOfResult = [content rangeOfString:kBreakIndicator];
NSString *temp = (rangeOfResult.location != NSNotFound) ? [content substringToIndex:rangeOfResult.location] : nil;
if (temp) {
[results addObject:temp];
content = [[[content stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@%@", temp, kBreakIndicator] withString:@""] mutableCopy] autorelease];
}else{
[results addObject:[content description]];
content = [[@"" mutableCopy] autorelease];
}
}
//Do something with the results array.
[results release];
您可以做的是首先使用NSString
的componentsSeparatedByString:
方法,该方法将为您提供NSArray
,如下所示:
编辑:假设您的kBreakIndicator
常量为<br>
:
NSArray *temp_results = [content componentsSeparatedByString:kBreakIndicator];
NSMutableArray *results = [[NSMutableArray alloc] init];
for(NSString *result in temp_results) {
if(result.length == 0) continue;
[results addObject:result];
}
//do something with results...
[results release];
@invariant回答的结果 : http : //cl.ly/3Z112M3z3K1V2t0A3N2L
我的回答结果 : http : //cl.ly/371b2j2H0Y1E110D2w0I
如果您的kBreakIndicator
常量为<br><br>
:
NSArray *result = [content componentsSeparatedByString:kBreakIndicator];
应该这样做:
NSArray *results = [content componentsSeparatedByString:@"<br><br>"];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.