1

のような文字列を解析する必要があり[abc]000、取得したいのは と を含む配列abcです000。それを行う簡単な方法はありますか?

私は次のようなコードを使用しています:

NSString *sampleString = @"[abc]000";
NSArray *sampleParts = [sampleString componentsSeparatedByString:@"]"];
NSString *firstPart = [[[sampleParts objectAtIndex:0] componentsSeparatedByString:@"["] lastObject];
NSString *lastPart = [sampleParts lastObject];

しかし、非効率的で、文字列が [**]** のような形式であるかどうかをチェックしていませんでした。

4

3 に答える 3

1

この単純なパターンでは、次のように自分自身を解析できます。

NSString *s = @"[abc]000";
NSString *firstPart = nil;
NSString *lastPart = nil;
if ([s characterAtIndex: 0] == '[') {
    NSUInteger i = [s rangeOfString:@"]"].location;
    if (i != NSNotFound) {
        firstPart = [s substringWithRange:NSMakeRange(1, i - 1)];
        lastPart = [s substringFromIndex:i + 1];
    }
}

または、NSScanner クラスの使い方を学ぶこともできます。

于 2013-05-10T03:01:36.870 に答える
0

このようにしてみてください、

NSString *sampleString = @"[abc]000";
NSString *pNRegex = @"\\[[a-z]{3}\\][0-9]{3}";
NSPredicate *PNTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pNRegex];
BOOL check=[PNTest evaluateWithObject:sampleString ];
NSLog(@"success:%i",check);

1 の場合success、文字列を配列に分割するアクションを実行できます。

于 2013-05-10T04:07:13.460 に答える