Objective c 组合两个字符串,以交替顺序从目标c中的两个字符串中获得每个字符的输出

Objective c 组合两个字符串,以交替顺序从目标c中的两个字符串中获得每个字符的输出,objective-c,Objective C,如何组合两个字符串中的字符并显示输出?string1和string2组合得到string3,输出如下。我找不到任何解决方案,此代码对我有效 string1=@"ACEG"; string2=@"BDF"; Output: ABCDEFG // Anybody has an alternative solution to get this result. { NSString *name1=@"ACEG"; NSString *name2=@"BDF"; NSString

如何组合两个字符串中的字符并显示输出?string1和string2组合得到string3,输出如下。我找不到任何解决方案,此代码对我有效

string1=@"ACEG";
string2=@"BDF";
Output:
ABCDEFG
// Anybody has an alternative solution to get this result.
{
    NSString *name1=@"ACEG";
    NSString *name2=@"BDF";
    NSString *name1Andname2=@"";
    NSInteger number;   
    NSMutableArray *charArray1 = [[NSMutableArray alloc] initWithCapacity:name1.length];
    NSMutableArray *charArray2 = [[NSMutableArray alloc] initWithCapacity:name2.length];
    for (int i=0; i < name1.length;i++) {
        NSString *ichar1  = [NSString stringWithFormat:@"%c", [name1 characterAtIndex:i]];
        [charArray1 addObject:ichar1];
    }
    for (int i=0; i < name2.length;i++) {
        NSString *ichar2  = [NSString stringWithFormat:@"%c", [name2 characterAtIndex:i]];
        [charArray2 addObject:ichar2];  
    }
    if (name1.length>name2.length)
    {
        number=name1.length;
    }
    else
    {
        number=name2.length;
    }
    for (int i=0; i <= number;i++) {
        if(name1.length>i)
        {
            name1Andname2=[name1Andname2 stringByAppendingString:charArray1[i]];
        }
        if(name2.length>i)
        {
        name1Andname2=[name1Andname2 stringByAppendingString:charArray2[i]];
        }
    }
    NSLog(@"%@",name1Andname2);
}

因为您希望结果是两个字符串的每个字符的交替,所以您当前的方法本质上就是实现它的方法。尽管您的代码可能无法处理所有可能的Unicode字符,因为并非所有字符都可以由长度为1的字符串表示。下面是一个更健壮的解决方案,适用于任何字符

NSString *name1=@"ACEG";
NSString *name2=@"BDF";

NSMutableArray *firstChars = [NSMutableArray array];

[name1 enumerateSubstringsInRange:NSMakeRange(0, name1.length) options: NSStringEnumerationByComposedCharacterSequences
    usingBlock: ^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
    [firstChars addObject: substring];
}];

NSMutableArray *secondChars = [NSMutableArray array];

[name2 enumerateSubstringsInRange:NSMakeRange(0, name2.length) options: NSStringEnumerationByComposedCharacterSequences
    usingBlock: ^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
    [secondChars addObject: substring];
}];

NSMutableString *result = [[NSMutableString alloc] init];
NSInteger maxLen = MAX(firstChars.count, secondChars.count);
for (NSInteger i = 0; i < maxLen; i++) {
    if (i < firstChars.count) {
        [result appendString:firstChars[i]];
    }
    if (i < secondChars.count) {
        [result appendString:secondChars[i]];
    }
}

NSLog(@"Final string: %@", result);

此代码仅使用这2个字符串。String1=@ABCDEFG String2=@123456789,输出应该是A1B2C3D4E5F6G789我发布的代码可以处理任意两个字符串。只需更改name1和name2的值。如果不能处理其他字符串,请说明这两个字符串是什么,以及您希望从这两个字符串中得到什么输出。因此,您似乎希望结果是两个字符串中每个字符的交替序列。您的问题使其看起来像是希望结果是按字母顺序排列的组合字符。您应该使用更好的示例更新您的问题。请参阅我的更新答案。它现在可以执行您想要的操作,并且可以处理包含任何Unicode字符的字符串。