我想分成NSString
具有固定长度部分的数组。我怎样才能做到这一点?
我搜索了一下,但我只找到了 componentSeparatedByString 方法,仅此而已。它也可以手动完成,但是有更快的方法吗?
我想分成NSString
具有固定长度部分的数组。我怎样才能做到这一点?
我搜索了一下,但我只找到了 componentSeparatedByString 方法,仅此而已。它也可以手动完成,但是有更快的方法吗?
取决于您所说的“更快”是什么意思 - 如果您指的是处理器性能,我猜它很难被击败substringWithRange:
,但是对于像这样的问题的健壮、简单的编码,正则表达式实际上可以派上用场。
这是一个可用于将字符串分成 10 个字符的块,允许最后一个块少于 10 个字符:
NSString *pattern = @".{1,10}";
不幸的是,正则表达式机制的 Cocoa 实现不太优雅,但使用起来足够简单:
NSString *string = @"I want to split NSString into array with fixed-length parts. How can i do this?";
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern: pattern options: 0 error: &error];
NSArray *matches = [regex matchesInString:string options:0 range:NSMakeRange(0, [string length])];
NSMutableArray *result = [NSMutableArray array];
for (NSTextCheckingResult *match in matches) {
[result addObject: [string substringWithRange: match.range]];
}
将字符串分解为一系列 NSRange,然后尝试使用 NSString 的substringWithRange:
方法。
您可以用不同的方式拆分字符串。一种方法是按空格(或任何字符)分割:
NSString *string = @"Hello World Obj C is Awesome";
NSArray *words = [string componentsSeparatedByString:@" "];
您还可以在字符串中的确切点拆分:
NSString *word = [string substringWithRange:NSMakeRange(startPoint, FIXED_LENGTH)];
只需将它放在一个固定长度的循环中并保存到可变数组:
NSMutableArray *words = [NSMutableArray array];
for (int i = 0; i < [string length]; i++) {
NSString *word = [string substringWithRange:NSMakeRange(i, FIXED_LENGTH)]; //you may want to make #define
[array addObject:word];
}
希望这可以帮助。