将字符串拆分为部分

时间:2013-09-13 21:20:21

标签: objective-c nsstring

我想将NSString拆分为具有固定长度部分的数组。我怎么能这样做?

我搜索了它,但我只找到了componentSeparatedByString方法,但仅此而已。它也可以手动完成,但有更快的方法吗?

3 个答案:

答案 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];
}

希望这有帮助。