2012-02-09 17 views
6

NSTextCheckingResult için docs bakarak ben NSRegularExpression arayışında eşleşme bulunamadı eğer eşleşme olması durumunda bulma am altında NSCheckingResult için aralık özelliği benim testi itibaren {NSNotFound,0}NSCheckingResult Range Özellik {NSNotfound, 0} olarak ayarlanmadı mı?

olarak ayarlanmış olacağını sanmıştım Bulunan NSCheckingResult aralığı {0,0} olarak ayarlanmıştır. Onun küçük bir nokta, ama sadece bunun nasıl çalıştığını anlamak için açıklığa kavuşturmak istedim.

// REGEXPRESSION 
NSString *textBuffer = @"1234567890"; 
NSString *pattern = @"(([A-Z]+))"; 
NSRegularExpression *regExp = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:nil]; 
NSTextCheckingResult *match = [regExp firstMatchInString:textBuffer options:0 range:NSMakeRange(0, [textBuffer length])]; 

// ERROR CHECK 
if([match range].location == NSNotFound) NSLog(@"Match Not found"); 
NSLog(@"location: %d", [match range].location); 
NSLog(@"length : %d", [match range].length); 

// OUTPUT 
location: 0 
length : 0 

DÜZENLEME: Bu örnekte NSTextCheckingResult *match olarak konumu ve uzunluğu, sıfır (sıfır nesneye mesajı) dönen muhtemelen neden olan nil ayarlanır edilmektedir.

if(!match) NSLog(@"Match Not Found"); 

Ben bu nedenle boş bir grubunu temsil birden yakalama grupları varken NSNotFound sadece döndürülür olduğunu tahmin ediyorum.

+0

Evet, null eşleşmesi nedeniyle. {{NSNotFound, 0} 'eşleşmeye katılmayan grup için rangeAtIndex:' tarafından döndürülebilir. – hoha

+0

@hoha yorumunuzu bir cevaba aktarırsanız, o zaman fuzzygoat bunu kabul edebilir ve bu soruyu Cevapsız sıraya taşıyabilir. –

cevap

2

Evet, null eşleşmesi nedeniyle. {NSNotFound, 0}, maça katılmayan grup için rangeAtIndex: tarafından iade edilebilir.

İlgili konular