0

我的字符串看起来像这样:

R392P328N87R3928N32P328N123

行结束由 N 后跟一个数字定义。

我需要将每一行拆分为一个数组对象。我正在考虑使用简单的 componentsSeparatedByString: 但是 N 后面有一个数字,我希望它在创建的对象中包含 N 。

还要注意,在 N 之前的不是常数。

换句话说,从上面那行开始,我需要它来创建 3 个数组对象:

R392P328N87
R3928N32
P328N123

这样做的最佳方法是什么?我是否应该尝试寻找'N'并在它到达另一个非十六进制字母时停止(我可能在N之后有十六进制)?

谢谢!

以利亚

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 回答