2017-12-20 28 views
0

나는 9823과 같은 숫자를 포함하는 NSString을 가지고 있습니다. 이제 그 문자열을 반복하고 숫자를 기반으로 한 일부 문장을 인쇄해야합니다. 예를 들어, 숫자 8의 경우 9 자릿수 ("B")로 인쇄해야합니다 ("A"). 확인을 위해 switch 문을 사용 하겠지만 숫자의 각 문자를 반복하는 법을 모르겠습니다 (다시 NSString). Swift에서는 for in 루프를 사용할 수 있지만 NSString은 Objective-C에서 배열로 간주되지 않으므로 여기서는 사용할 수 없습니다. 따라서 for in에 대한 대체 방법이 과 함께 사용되는 Objective-C에 있는지 궁금합니다. . 나는 단지 Objective-C을 배우는 중이므로 어떤 도움을 주시면 감사하겠습니다.NSString의 각 문자를 확인하는 방법은 무엇입니까?

+0

'rangeOf :'를 사용하면'8 '이 있는지 없는지 쉽게 찾을 수 있지만 https://stackoverflow.com/questions/4158646/most-efficient-way-toterate-over-all -the-chars-in-an-nsstring? – Larme

답변

0

NSRegularExpression 여기에 아주 잘 맞는 것 :

NSString *yourString = @"Greetings SEN 5241, LUH 3417 and THX 1138."; 

NSError *error = nil; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(\\d*?8\\d*)" 
                     options:kNilOptions 
                     error:&error]; 
NSAssert(!error, @"%@", error); 

[regex enumerateMatchesInString:yourString 
         options:kNilOptions 
          range:NSMakeRange(0, yourString.length) 
        usingBlock:^(NSTextCheckingResult * _Nullable result, NSMatchingFlags flags, BOOL * _Nonnull stop) { 
         NSLog(@"%@", [yourString substringWithRange:result.range]); 
        }]; 

도움이 될 수 있습니다 (예 : RegExr 등) 아주 좋은 온라인 정규 표현식 놀이터가 있습니다. 또한 정규 표현식은 모든 언어로 어디서나 유용하게 사용할 수있는 기술입니다.