Geometry 関数
NSBundle
NSDictionary
NSFileManager
NSMutableAttributedString
NSNumber
NSScanner
-文字列をトークンに分割する
NSString
NSTimer
Graphic 関数
NSApplication
NSBezierPath
NSCell
NSColor
NSCursor
NSCustomImageRep
NSDocument
NSDocumentController
NSDragging
NSEvent
NSFontManager
NSGraphicsContext
NSImage
NSMenu
NSOutlineView
NSPanel
NSPopUpButton
NSResponder
NSScrollView
NSString 追加
NSTableColumn
NSTableView
NSTextStorage
NSTextView
NSToolbar
NSView
NSWindow
NSWorkspace
その他
.nib ウィンドウ
Views パレット
クラス
インスタンス変数
メソッド
CFXML
Carbon Event
Carbon Graphics
Cocoa で日本語
メソッド
その他

- 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)



[Home] [Download] [Archives] [BBS] [Cocoa Programming Tips 1001] [Core Foundation の秘密] [Safari Developer Center] [はじめてのブラウザのつくり方] [Sketch BP] [スクリーンセイバーを作ろう] [Objective-C 最適化] [Authorization API 完全理解] [Mac OS X Programming Books Review] [オブジェクト指向の言語比較論] [panther-dev]

mailto: mkino@xd5.so-net.ne.jp