2013-04-11 2 views
0

Мне нравится знать, как получить конкретную строку, которая начинается с & abc и заканчивается &. Я попытался с префиксом и sufix. но это не новая линия,Как получить строку начинается с & abc и заканчивается на &

&xyz; 123: 183: 184: 142 &
&abc; 134: 534: 435: 432 &
&qwe; 323: 535: 234: 532 &

мой код:

NSMutableArray *substrings = [NSMutableArray new]; 
NSScanner *scanner = [NSScanner scannerWithString:s]; 
[scanner scanUpToString:@"&abc" intoString:nil]; // 
NSString *substring = nil; 
[scanner scanString:@"&abc" intoString:nil]; // Scan the # character 
if([scanner scanUpToString:@"&" intoString:&substring]) { 
    // If the space immediately followed the &, this will be skipped 
    [substrings addObject:substring]; 
    NSLog(@"substring is :%@",substring); 
} 
// do something with substrings 
[substrings release]; 

как сделать "сканер scanUpToString: @" & abc "и count": "== 3 до" # "???? может помочь мне

+0

строка в массиве или? –

+0

ya его в массиве i ll помещается в массив – Diaaaaan

+0

, поэтому ваш массив является '@ [@" & abcxx & ", @" anoop ", @" & abcApple & ", @" @ abcBox "];' И ваш фильтрованный массив shuld содержит. . '& abcxx &, & abcApple &' –

ответ

3
NSArray *arr = [NSArray arrayWithObjects:@"&xyz;123:183:184:142&", 
        @"&abc;134:534:435:432&", 
        @"&qwe;323:535:234:532&", 
        @"& I am not in it", 
        @"&abc I am out &" ,nil]; 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self BEGINSWITH[cd] %@ AND self ENDSWITH[cd] %@",@"&abc",@"&"]; 

    NSLog(@"Sorted Array %@",[arr filteredArrayUsingPredicate:predicate]); 
    NSArray *sortedArray = [arr filteredArrayUsingPredicate:predicate]; 

    NSMutableArray *finalResult = [NSMutableArray arrayWithCapacity:0]; 
    for(NSString *string in sortedArray) 
    { 
     NSString *content = string; 
     NSRange range1 = [content rangeOfString:@"&abc"]; 
     if(range1.length > 0) 
      content = [content stringByReplacingCharactersInRange:range1 withString:@""]; 

     NSRange range2 = [content rangeOfString:@"&"]; 
     if(range2.length > 0) 
      content = [content stringByReplacingCharactersInRange:range2 withString:@""]; 

     [finalResult addObject:content]; 
    } 

    NSLog(@"%@",finalResult); 
+0

он работает нормально, если есть space "&" (self ENDSWITH). проверьте, «&qwe; 323: 535: 234: 532 &« это не работает в вашем коде – Diaaaaan

+0

, так что вы хотите, чтобы все строки начинались с «& abcæ» или заканчивались на «&», справа @dilipanand –

+0

будет соответствовать символам/словам, которые вы вводите в строке фильтра, если вы хотите поместить '&', тогда он будет возвращать совпадение, не заканчивающееся на '&', но заканчивающееся только '&' –

0

NSRegularExpression Попробуйте использовать:

- (BOOL)isValidString:(NSString *)string 
{ 
    NSRegularExpression *regularExpression = [NSRegularExpression regularExpressionWithPattern:@"^&abc.*&$" options:0 error:NULL]; 
    NSTextCheckingResult *result = [regularExpression firstMatchInString:string options:0 range:NSMakeRange(0, [string length])]; 
    return (result != nil); 
} 
Смежные вопросы