2017-12-20 7 views
0

私は9823のような数字を含むNSStringを持っています。今度はその文字列を繰り返し処理し、数字に基づいていくつかのステートメントを出力する必要があります。たとえば、数字8の場合は、印刷する必要があります(「A」)。数字9は「B」です。チェックのために私はswitchステートメントを使用しますが、数値の各文字を反復する方法はわかりません(NSStringです)。 Swift私はfor inループを使用することができますが、NSStringはObjective-Cの配列とはみなされないため、ここでは使用できません。for inの代替があるかどうかは 。私はちょうどObjective-Cを学んでいるので、私は助けていただければ幸いです。NSStringの各文字をチェックするには?

+0

「rangeOf:」を使用すると、「8」かどうかを簡単に見つけることができますが、https://stackoverflow.com/questions/4158646/most-efficient-way-to-iterate-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など)いくつかの非常に良いオンライン正規表現の遊び場があります。また、正規表現は、あらゆる言語でどこでも便利なスキルです。

関連する問題