我有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位数...... 有更聪明的方法吗?我想到的正则表达式,我宁愿不麻烦。任何最佳做法?
答案 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];
}
警告,在浏览器中键入但未编译。 警告实施者