アプリケーションのスクリプトがあり、特定の番号を抽出する方法に行き詰まっています。例:
\n@JulianJear\nApplication Development 4 iPhone and iPad.\n5\n
その文字列から「4」を取得せずに「5」を削除する方法を思い付くことができませんでした。スキャナーを使うことを考えましたが、このテキストの文字数はユーザーごとに異なります。では、この数を抽出するために他にどのような方法を使用できますか?
アプリケーションのスクリプトがあり、特定の番号を抽出する方法に行き詰まっています。例:
\n@JulianJear\nApplication Development 4 iPhone and iPad.\n5\n
その文字列から「4」を取得せずに「5」を削除する方法を思い付くことができませんでした。スキャナーを使うことを考えましたが、このテキストの文字数はユーザーごとに異なります。では、この数を抽出するために他にどのような方法を使用できますか?
解析されるテキストが常に次の形式である場合
<Handle>
<Title>
<Number>
すなわち
\n<Name>\n<Title>\n<Number>\n
を使用しNSScanner
て文字列を解析できます。
#import <Foundation/Foundation.h>
int main(int argc, char *argv[]) {
@autoreleasepool
{
NSString *string = @"\n@JulianJear\nApplication Development 4 iPhone and iPad.\n5\n";
NSScanner *scanner = [[NSScanner alloc] initWithString:string];
NSCharacterSet *newlineCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@"\n"];
NSString *handle = nil;
NSString *title = nil;
NSString *number = nil;
[scanner scanUpToCharactersFromSet:newlineCharacterSet intoString:&handle];
[scanner scanUpToCharactersFromSet:newlineCharacterSet intoString:&title];
[scanner scanUpToCharactersFromSet:newlineCharacterSet intoString:&number];
NSLog(@"\nhandle=%@\ntitle=%@\nnumber=%d", handle, title, [number intValue]);
}
}
で文字列を分割し、\n
数値を表す文字列を探すことができます。
NSArray *tokens = [str componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@"\n"]];
配列内の文字tokens
列を調べて、数値を表す最初の文字列を取得します。