簡體   English   中英

如何優化此循環?

[英]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];

您可以做的是首先使用NSStringcomponentsSeparatedByString:方法,該方法將為您提供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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM