0

私の文字列は次のようになります。

R392P328N87R3928N32P328N123

行末は、N の後に数字が続くことによって定義されます。

各行を配列オブジェクトに分割する必要があります。私は単純に componentsSeparatedByString: を使用することを考えていましたが、N の後に数字があり、作成されたオブジェクトに N を含めたいと考えています。

また、N の前に来るものは定数ではないことに注意してください。

つまり、上記の行から、3 つの配列オブジェクトを作成する必要があります。

R392P328N87
R3928N32
P328N123

これを行う最善の方法は何ですか?「N」を探して、16 進数以外の別の文字 (N の後に 16 進数がある可能性があります) に達したときに停止するものを試してみるべきですか?

ありがとう!

エリヤ

4

1 に答える 1

1

正規表現の仕事のように聞こえます。

NSString *string = @"R392P328N87R3928N32P328N123";
NSString *pattern = @".*?N\\d+";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:NULL];
NSMutableArray *lines = [NSMutableArray array];
[regex enumerateMatchesInString:string options:0 range:NSMakeRange(0, string.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
    [lines addObject:[string substringWithRange:result.range]];
}];
NSLog(@"%@", lines);

// => ["R392P328N87", "R3928N32", "P328N123"]
于 2013-05-03T20:52:24.147 に答える