将字符串分成相等的部分

时间:2013-11-29 12:05:05

标签: objective-c string nsstring divide

我可以总结一下字符串:

result=[firstString stringByAppendingString:secondString];

我可以从另一个字符串中减去一个字符串:

result=[firstString stringByReplacingOccurencesOfString:secondString withString:@""];

你能帮我把字符串分成相等的字符串吗(例如我有字符串@" Qwerty",我想把它除以3并得到数组@ [@" Qw" ,@"呃",@" ty"],或者除以2来得到@ [@" Qwe",@" rty" ])?谢谢!

3 个答案:

答案 0 :(得分:1)

请使用功能[NSString substringWithRange:]。更多信息here

是大卫,听到你...... !!!

贝娄是代码。

for(int i=0;i<strToDivide.length-iLengthToDivide;i=i+iLengthToDivide)
{
NSString *strPart=[strToDivide substringWithRange:(i,iLengthToDivide)];

[arrToStoreParts addObject:strPart];

//if the length of string is not perfectly divisible by iLengthToDivide
  if(i+iLengthToDivide>strToDivide.length)
 {
 strPart=[strToDivide substringWithRange:(i,strToDivide.length-i)];
 [arrToStoreParts addObject:strPart];
 }
strPart=nil;
}
}

arrToStoreParts将包含结果集中的所有字符串。

我认为在for循环中捆绑这个函数非常简单,并且他能够做到这一点,因为他知道其他字符串函数,所以最初没有给出代码。希望它有所帮助:))

答案 1 :(得分:1)

你可以得到字符串长度除以它所需的数字和它的基数创建NSRange:

    NSString *str = @"Qwerty";
    int len = str.length;
    int devider = 2; // Change it to control result length

    for (int i = 0; i < len; i += devider)
    {
        // You should do some validation to make sure your location and length is in range f string length
        NSRange ran = NSMakeRange(i, devider);
        NSString *res = [str substringWithRange:ran];
        NSLog(@"res: %@", res);
    }

您可以创建NSString类别以达到您要求的结果。 希望这有帮助。

答案 2 :(得分:1)

NSMutableArray* array1 = [[NSMutableArray alloc] init];

int divide_factor = <your divide_factor>;

while (yourString.length) {

    NSString* substring = [yourString substringWithRange:NSMakeRange(0, MIN(divide_factor, yourString.length))];

    [array1 addObject:substring];

    yourString = [yourString stringByReplacingCharactersInRange:NSMakeRange(0, MIN(divide_factor, yourString.length)) withString:@""];

}

优点是,无论字符串的长度如何,它都不会抛出任何异常。最后一个子字符串将是除法后的剩余子字符串。

测试案例:

(1)

yourString = @"abcdefghijklmnopqrstuvwxyz";

divide_factor = 3;

然后结果是: (     ABC,     闪避,     GHI,     JKL,     MNO,     焊接工艺评定,     STU,     VWX,     YZ )

(2)

yourString = @"abcdefghijklmnopqrstuvwxyz";

divide_factor = 7;

结果: (     ABCDEFG,     hijklmn,     opqrstu,     VWXYZ )