【问题标题】:In the iPhone SDK is it safe and proper to chain stringByAppendingString in line?在 iPhone SDK 中串联 stringByAppendingString 是否安全且正确?
【发布时间】:2012-08-24 16:50:57
【问题描述】:

有没有更好的方法来实现在一行中连接多个字符串?或者在这样做时有任何建议。

NSString *string1 = @"one";
NSString *string2 = @"one";
NSString *string3 = @"one";
NSString *appendedText = @"";

[appendedText = [[string1 stringByAppendingString: string2] stringByAppendingString: string3]

【问题讨论】:

    标签: iphone objective-c xcode nsstring concatenation


    【解决方案1】:

    安全和适当?当然。

    假设你有:

    NSString *a = @"hay";
    NSString *b = @"bee";
    NSString *c = @"see";
    

    您可以使用stringByAppendingString: 将它们全部连接起来:

    cat = [a stringByAppendingString:[b stringByAppendingString:c]];
    

    您可以使用stringByAppendingFormat: 将它们全部连接起来:

    cat = [a stringByAppendingFormat:@"%@%@", b, c];
    

    你可以使用stringWithFormat::

    cat = [NSString stringWithFormat:@"%@%@%@", a, b, c];
    

    您可以将它们放在一个数组中,并使用componentsJoinedByString:: (只是为了好玩,使用array literal syntax

    array = @[ a, b, c];
    cat = [array componentsJoinedByString:@""];
    

    您可以将它们收集在可变字符串中:

    NSMutableString *temp = [a mutableCopy];
    [temp appendString:b];
    [temp appendString:b];
    cat = [temp copy]; // if you want to make sure result is immutable
    

    所有这些方法都可以。以下是我选择使用的建议:

    1. 使用任何一种都可以使您的代码清晰易读。
    2. 当您的应用正常运行时,使用 Instruments 对其进行分析。
    3. 只有当您发现字符串连接导致性能问题时,才考虑使用不同的方法。

    【讨论】:

    • 这正是我一直在寻找的,它回答了问题,谢谢。
    【解决方案2】:

    你可以使用stringByAppendingFormat:

    [string1 stringByAppendingFormat:@"%@%@",string2,string3]

    Here 是一个参考

    你也有NSMutableString,但就语法而言,它看起来差不多

    丹尼尔

    【讨论】:

    • 我完全忘记了 NSMutableString,感谢您提醒我。我会在未来的应用程序中考虑到这一点,因为我认为它可能会更清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多