将NSString操作为2D NSMutableArray

时间:2011-04-05 19:38:29

标签: iphone objective-c xcode nsstring nsarray

我有13条文本行,格式如下: “1234 56789 1235 98765 ...”(四位数 - 空白 - 五位数)循环3次。 问题是空格有时可能不存在。像这样: “1234 56789 123598765 ...”但分离的4位和5位仍然相关。

我很困惑,我如何将每行的内容剪切并粘贴到数据结构的表格中。这就是我到目前为止所做的:

for (int column = 0; column < 6; column++) {
        // take first 4 digits
        cursor_offset += 4; 
        temp = [entry substringWithRange:NSMakeRange(cursor,cursor_offset)];
        cursor = cursor_offset; // update cursor position
        if ([entry substringWithRange:NSMakeRange(cursor_offset,cursor_offset+1)] isEqualToString:@" "]) {
            // space jump
            cursor_offset+=1; // identify blank space and jump over it
        }

在此之后我进一步尝试抓住另外6位数...... 有更聪明的方法吗?我想到的正则表达式,我宁愿不麻烦。任何最佳做法?

1 个答案:

答案 0 :(得分:1)

我可能只是从字符串中删除所有空格,然后将这些空格分块:

NSString *source = @"1234 56789 1234 1234 56789 1234 1234 56789 1234 1234 56789 1234 1234 56789 1234";
NSString *stripped = [[source componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet] componentsJoinedByString:@""];

NSAssert([stripped length] % 13 == 0, @"string length must be a multiple of 13");

NSMutableArray *sections = [NSMutableArray array];
for (NSInteger location = 0; location < [stripped length]; location += 13) {
  NSString *substring = [stripped substringWithRange:NSMakeRange(location, 13)];
  NSArray *fields = [NSArray arrayWithObjects:
                     [substring substringWithRange:NSMakeRange(0,4)],
                     [substring substringWithRange:NSMakeRange(4,5)],
                     [substring substringWithRange:NSMakeRange(9,4)],
                     nil];
  [sections addObject:fields];
}

警告,在浏览器中键入但未编译。 警告实施者