如果它们不是严格分隔部分的t
字符,即部分总是8 个字符长,那么很容易做到:
NSString *string = @"t00010000t00020000t00030000";
NSMutableArray *arr = [NSMutableArray array];
int i;
for (i = 0; i < string.length; i += 8) {
[arr addObject:[string substringWithRange:NSMakeRange(i, 8)]];
}
这里arr
将包含 8 个字符的子字符串。
编辑:所以让我也为多维提供另一种解决方案。当然@KevinH 的字符解决方案非常优雅,但是如果你需要一个 NSString 并且你不介意实现另一种方法,那么添加这样的东西相当容易:
@implementation NSString (EightCarAdditions)
- (NSString *)charAsStringInSection:(NSInteger)section index:(NSInteger)index
{
return [self substringWithRange:NSMakeRange(section * 8 + index, 1)];
}
- (unichar)charInSection:(NSInteger)section index:(NSInteger)index
{
return [self characterAtIndex:section * 8 + index];
}
@end
(请注意characterAtIndex
返回 aunichar
而不是a char
- 为超过 1 字节宽的 UTF-(8, 16, 32) 内容做好准备。)然后您可以在 NSString 本身上调用这些方法,因此非常方便:
unichar ch = [string charInSection:1 index:3];