Objective c 把绳子分成几部分

Objective c 把绳子分成几部分,objective-c,nsstring,Objective C,Nsstring,我想将NSString拆分为具有固定长度部分的数组。我该怎么做 我搜索了一下,但只找到了通过字符串方法分离的组件,除此之外什么都没有。它也可以手动完成,但有没有更快的方法来完成此操作?将字符串拆分为一个nsrange序列,然后尝试使用NSString的substringWithRange:方法。将字符串拆分为一个nsrange序列,然后尝试使用NSString的substringWithRange:方法。取决于您的意思“更快”-如果您所指的是处理器性能,我想很难用range:击败substrin

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


我搜索了一下,但只找到了通过字符串方法分离的组件,除此之外什么都没有。它也可以手动完成,但有没有更快的方法来完成此操作?

将字符串拆分为一个nsrange序列,然后尝试使用NSString的
substringWithRange:
方法。

将字符串拆分为一个nsrange序列,然后尝试使用NSString的
substringWithRange:
方法。

取决于您的意思“更快”-如果您所指的是处理器性能,我想很难用range:击败
substringWithRange:
,但是对于这样一个问题的健壮、简单的编码,正则表达式实际上非常方便

这里有一个可以用来将字符串划分为10个字符的块,允许最后一个块少于10个字符:

NSString *pattern = @".{1,10}";
不幸的是,regex机制的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]];
}
取决于你所说的“更快”是什么意思——如果你指的是处理器性能,我想很难用range:来击败
substringWithRange:
,但是对于这样一个问题的健壮、简单的编码,正则表达式实际上非常方便

这里有一个可以用来将字符串划分为10个字符的块,允许最后一个块少于10个字符:

NSString *pattern = @".{1,10}";
不幸的是,regex机制的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]];
}

可以用不同的方式拆分字符串。 一种方法是按空格(或任何字符)拆分:

也可以在字符串中的精确点拆分:

NSString *word = [string substringWithRange:NSMakeRange(startPoint, FIXED_LENGTH)];
只需将其放入固定长度的循环中并保存到可变数组:

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];
}
NSMutableArray*words=[NSMutableArray];
对于(int i=0;i<[字符串长度];i++){
NSString*word=[string substringWithRange:NSMakeRange(i,FIXED#LENGTH)];//您可能需要进行#定义
[数组addObject:word];
}

希望这有帮助。

您可以用不同的方式拆分字符串。 一种方法是按空格(或任何字符)拆分:

也可以在字符串中的精确点拆分:

NSString *word = [string substringWithRange:NSMakeRange(startPoint, FIXED_LENGTH)];
只需将其放入固定长度的循环中并保存到可变数组:

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];
}
NSMutableArray*words=[NSMutableArray];
对于(int i=0;i<[字符串长度];i++){
NSString*word=[string substringWithRange:NSMakeRange(i,FIXED#LENGTH)];//您可能需要进行#定义
[数组addObject:word];
}

希望这能有所帮助。

你说的“手动”或“非手动”是什么意思"? 计算机是一个自动机…我可以把我的字符串,裁剪它,然后周期性地把裁剪过的字符串放入数组。问题是我的绳子很大,我需要把它分成10.000个绳子长度的部分。此阵列总共将包含超过500.000个对象。这是一个非常大的字符串,所以我需要更快的方法,因为我知道你正在搜索的魔法方法并不存在。在某个时刻,必须有一个循环复制字符串的某些部分。即使不是你做的,它也会在代码中的某个地方。@Monolo-answer帮助我。谢谢你,你说的“手动”或“非手动”是什么意思?计算机是一个自动机…我可以把我的字符串,裁剪它,然后周期性地把裁剪过的字符串放入数组。问题是我的绳子很大,我需要把它分成10.000个绳子长度的部分。此阵列总共将包含超过500.000个对象。这是一个非常大的字符串,所以我需要更快的方法,因为我知道你正在搜索的魔法方法并不存在。在某个时刻,必须有一个循环复制字符串的某些部分。即使不是你做的,它也会在代码中的某个地方。@Monolo-answer帮助我。无论如何,谢谢注意,如果范围超出字符串长度,则会出现异常,因此需要对此进行测试并相应修改范围。这很好。我尝试了@Monolo的代码,它工作得非常好。所以我建议使用正则表达式,它适合我的需要。请注意,如果范围超出字符串长度,则会出现异常,因此需要对此进行测试并相应地修改范围。这很好。我尝试了@Monolo的代码,它工作得非常好。所以我建议使用正则表达式,它适合我的需要。您的正则表达式匹配“\n”您的正则表达式匹配“\n”