首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NSString stringByAppendingString:递归长字符串

首先,为了完善这个答案,我们需要了解提问者的问题背景。从问题描述中,我们可以推测提问者需要将一个长字符串递归地添加到另一个字符串中。为了完成这个任务,我们需要在字符串的末尾添加一个特殊字符,用于拆分原始字符串并为每个部分添加子字符串。

在回答中,我们可以使用一个字符串数组来存储每个递归部分的子字符串,然后使用一个循环来将每个子字符串添加到原始字符串的末尾。在每次递归调用中,我们将原始字符串的末尾添加一个新的子字符串,然后递归调用 ourselves() 来继续拆分剩余的部分,直到所有部分都被添加到原始字符串的末尾。

以下是一个可能的实现示例:

代码语言:txt
复制
- (NSString *)stringByAppendingString:(NSString *)aString {
    NSMutableString *result = [self mutableCopy];
    [result appendString:aString];
    [result appendString:@"@"];
    return result;
}

- (NSString *)recursiveAppendString:(NSString *)aString {
    NSMutableString *result = [self mutableCopy];
    if ([result length] == 0) {
        [result appendString:aString];
        return result;
    }
    NSString *lastString = [result last];
    if ([aString isEqualToString:@"@"]) {
        [result appendString:lastString];
    } else {
        [result appendString:aString];
        [result appendString:lastString];
    }
    [result appendString:@"@"];
    return result;
}

在这个实现中,我们首先定义了一个名为 stringByAppendingString: 的静态方法,该方法将一个字符串添加到另一个字符串的末尾。为了完成这个任务,我们需要在字符串的末尾添加一个特殊字符 @,以便于拆分原始字符串并为每个部分添加子字符串。

我们还定义了一个名为 recursiveAppendString: 的递归方法,该方法用于将一个字符串添加到另一个字符串的末尾。在递归方法中,我们首先检查原始字符串是否为空,如果是,则直接将子字符串添加到末尾。否则,我们将原始字符串的最后一个字符添加到结果字符串的末尾,并将子字符串添加到原始字符串的末尾,以便递归调用 ourselves() 方法来继续拆分剩余的部分。

如果子字符串为 @,则表明原始字符串是一个完整的字符串,我们可以直接将其添加到结果字符串的末尾。

如果您需要使用该方法,可以在调用该方法时传递一个字符串参数,例如:

代码语言:txt
复制
NSString *result = [myString stringByAppendingString:@"hello"];

在这个示例中,我们将字符串 myString 追加到 @"hello" 的末尾,并将结果存储在 result 变量中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • iOS类簇代码保护引发的Crash原因排查全记录

    二、问题初步排查 在程序启动后,APP 会卡死一段时间,然后出现闪退,从闪退的堆栈上不难看出,这里是方法发生了循环调用: 这里的方法是对NSString方法的 - (NSString *)stringByAppendingString...:(NSString *)aString 方法进行了 MethodSwizzle,目的在于防护因传入空字符串参数导致的 crash,而在方法交换时,由于某种原因,方法一直在循环调用自己本身,最终导致爆栈...第三方 SDK 为 NSString 添加了一个 MethodSwizzle 方法,由于命名重合,走到了 K 歌侧逻辑,所以添加了方法名为 ksSafe_StringByAppendingString:...的安全实现,我们记为IMP B,将其与OC 原生的 stringByAppendingString: 实现(记为IMP A)进行了实现交换,当前场景下NSString 的方法映射关系是: <NSString...这里应该注意的是,IMP B 和 IMP C 本质上都是K 歌为 NSString 添加的 ksSafe_StringByAppendingString: 的安全实现,其底层是同一套代码实现,当传入的参数不为空时

    27410

    Objective-C精选字符串处理方法

    1.字符串的创建         字符串的创建有多种方法,下面的例子中给了常用的几种字符串创建方法(还有好多) 1 2 3 4 5 6 //字符串创建工厂     NSString *str1 = [NSString...;         break; }     ​     ​5.字符串的拼接函数 stringByAppendingString : (NSString *) aString;  和 stringByAppendingFormat...I love "; NSString *append2 = @"china";   //用stringByAppendingString来进行字符串的拼接 append1 = [append1 stringByAppendingString...-(NSString *)substringToIndex : (NSUInterger) to  获取从字符串开头到字符串的to位置的字符串内容,包含to位置的字符;     ​    ​-(NSString...18 //字符串替换函数 NSString *string = @"abc,def,g";   //将字符串中特定的字符串换成指定的字符串 NSString *after = [string stringByReplacingOccurrencesOfString

    82650

    字符串(NSString)、字典(NSDictionary)、数组(NSArray)的总结

    https://blog.csdn.net/u010105969/article/details/46853419 字符串——NSString 学习字符串首先要懂得字符串的创建,创建方式也有好几种方式...,NSString  * str = @"qwe"; NSString * str2 = [[NSString alloc] initWithString : str]; NSString * str3...= [[NSString alloc] initWithUTF8String:"hello world"]; NSString * str4 = [[NSString alloc] initWithFormat...NSString是不可变字符串,所谓不可变就是字符串的长度内容是不可以改变的,不能增长、不能缩短、不能换字符。。。...字符串中除了不可变字符串还有可变字符串即NSMutableString.可变字符串的内容、长度就可以被我们任意更改了。 下面同样举一些函数,注意如果是不可变字符串这些函数是不可以用的。

    1K20

    【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序打印字符串 | 递归要素 | 递归停止条件 | 递归操作 )

    文章目录 一、借助 递归函数操作 逆序打印字符串 二、完整代码示例 一、借助 递归函数操作 逆序打印字符串 ---- 递归需要掌握下面 2 个点 : 参数入栈模型 : 第 1 次 , “sdh...” 字符串入栈 ; 第 2 次 , “dh” 字符串入栈 ; 第 3 次 , “h” 字符串入栈 ; 第 4 次 , “\0” 字符串入栈 ; 函数调用模型 : 递归函数 需要有 递归停止条件...和 递归操作 2 个要素 ; 递归停止条件 : 遍历字符串直到遍历到字符串结尾处 ; // 递归停止条件 if(*str == '\0') { return...; } 递归操作 : 每次递归 , 字符串中的指针向后移动一位 , 直到字符串移动到最后一位 \0 位置 ; // 递归操作 // 该递归操作会逐步 将 字符串 从开始位置 入栈...} // 递归操作 // 该递归操作会逐步 将 字符串 从开始位置 入栈 // 直到递归到 '\0' 位置时 , 才开始出栈 // 此处是递归点 //

    1.2K10
    领券