我想将NSString
拆分为具有固定长度部分的数组。我怎么能这样做?
我搜索了它,但我只找到了componentSeparatedByString方法,但仅此而已。它也可以手动完成,但有更快的方法吗?
答案 0 :(得分:6)
取决于“更快”的意思 - 如果它是您所指的处理器性能,我猜它很难超越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]];
}
答案 1 :(得分:0)
将字符串分解为NSRanges序列,然后尝试使用NSString的substringWithRange:
方法。
答案 2 :(得分:0)
您可以以不同方式拆分字符串。 一种方法是按空格(或任何字符)分割:
NSString *string = @"Hello World Obj C is Awesome";
NSArray *words = [string componentsSeparatedByString:@" "];
您还可以在字符串中的精确点进行拆分:
NSString *word = [string substringWithRange:NSMakeRange(startPoint, FIXED_LENGTH)];
只需将其放入一个固定长度的循环中并保存到Mutable Array:
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];
}
希望这有帮助。