Objective c 组合两个字符串,以交替顺序从目标c中的两个字符串中获得每个字符的输出
如何组合两个字符串中的字符并显示输出?string1和string2组合得到string3,输出如下。我找不到任何解决方案,此代码对我有效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=@"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字符的字符串。