HMDT - Logic and Intuition -

about HMDT

Cocoa Programming Tips 1001

Foundation

NSScanner

Foundation - NSScanner

文字列をトークンに分割する

Keywords: tokenize

NSScanner は、NSString を探索するためのクラスだ。NSCharacterSet といっしょに使うことで、NSString の中を、いろいろな形でたぐれる。ここでは、トークン分割をやってみよう。いくつかのデリミタを設定して、それごとに NSString を分割するんだ。そのために、scanCharactersFromSet:intoStringscanUpToCharactersFromSet:intoString を使う。

Foundation/NSScanner.h

- (BOOL)scanCharactersFromSet:(NSCharacterSet *)set intoString:(NSString **)value;
- (BOOL)scanUpToCharactersFromSet:(NSCharacterSet *)set intoString:(NSString **)value;

どちらも、現在のスキャン位置からスキャンを開始して、文字列を取り出すメソッドだ。scanCharactersFromSet:intoString: は、指定された NSCharacterSet の文字が、出ている限り、スキャンをすすめる。それに対して、scanUpToCharactersFromSet:intoString: は、NSCharacterSet の文字が、出て来るまで、スキャンするんだ。

この 2 つを利用してトークン分割を書くと、こうなる。

(sample)

    NSCharacterSet* chSet;
    NSString* scannedName;
    NSScanner* scanner;
    
    string = @"abc, def,gh, ijk";
    
    chSet = [NSCharacterSet characterSetWithCharactersInString:@", "];
    scanner = [NSScanner scannerWithString:string];
    while(![scanner isAtEnd]) {
        if([scanner scanUpToCharactersFromSet:chSet intoString:&scannedName]) {
            NSLog(scannedName);
        }
        [scanner scanCharactersFromSet:chSet intoString:nil];
    }

これで、トークン分割されるぜ!

■関連リンク:
トークンに分割する (NSString)

back to top content

Copyright © 2002-2006 HMDT. All rights reserved.