2011-11-06 3 views

Répondre

0

C'est ma solution. Je sais que ça peut être mieux. Je sais environ Retour référence mais je n'ai pas d'expérience avec elle.

NSRegularExpression *exp = [NSRegularExpression regularExpressionWithPattern:@"((@\"|\").*?(\"))" 
              options:NSRegularExpressionDotMatchesLineSeparators 
              error:nil]; 
NSArray *textArr = [exp matchesInString:string options:0 range:NSMakeRange(0, [string length])]; 

for (NSTextCheckingResult *result in textArr) { 
    // set color for range 
} 


// Comments 
exp = [NSRegularExpression regularExpressionWithPattern:@"(//[^\"\n]*)" 
               options:0 
               error:nil]; 

NSArray * arrayComments = [exp matchesInString:string options:0 range:NSMakeRange(0, [string length])]; 

for (NSTextCheckingResult *resultComment in arrayComments) { 

    BOOL inside = NO; 
    for (NSTextCheckingResult *resultText in textArr) { 
     NSInteger from = resultText.range.location; 
     NSInteger to = resultText.range.location+resultText.range.length; 
     NSInteger now = resultComment.range.location; 
     if (from < now && now < to) { 
      inside = YES; 
      break; 
     } 
    } 
    if (!inside) { 
     // set color for range 
    } 
} 

answer on my blog