附加到NSString方法的开头

时间:2013-02-02 21:10:42

标签: ios objective-c swift nsstring append

我想在NSString A前添加NSString B。是否有内置方法附加到NSString的开头而不是NSString的结尾?

我知道我可以使用stringWithFormat,但是使用stringWithFormatstringByAppendingString将文本添加到NSString的末尾有什么区别?

5 个答案:

答案 0 :(得分:35)

如果你可以追加到字符串的末尾,你可以添加到字符串的开头。

<强>追加

NSString* a = @"A";
NSString* b = @"B";
NSString* result = [a stringByAppendingString:b]; // Prints "AB"

<强>前置

NSString* a = @"A";
NSString* b = @"B";
NSString* result = [b stringByAppendingString:a]; // Prints "BA"

答案 1 :(得分:9)

单线解决方案:

myString = [@"pretext" stringByAppendingString:myString];

答案 2 :(得分:4)

您也可以使用stringWithFormat:

NSString *A = @"ThisIsStringA";
NSString *B = @"ThisIsStringB";
B = [NSString stringWithFormat:@"%@%@",A,B];

stringByAppendingString是NSString的实例方法, stringWithFormat是类NSString的类方法。

答案 3 :(得分:2)

可能值得指出的是,没有“将一个字符串附加到另一个字符串上”。 NSString是不可变的。

在每种情况下,您都是“创建一个由一个字符串组成的新字符串”。

将新创建的字符串放回同一个变量中并不重要。

你永远不会“将文字添加到字符串的末尾”。

答案 4 :(得分:0)

我在Swift中解决了这个问题:

extension String {

    // Add prefix only, if there is not such prefix into a string
    mutating func addPrefixIfNeeded(_ prefixString: String?) {
        guard let stringValue = prefixString, !self.hasPrefix(stringValue) else {
            return
        }
        self = stringValue + self
    }


    // Add force full prefix, whether there is already such prefix into a string
    mutating func addPrefix(_ prefixString: String?) {
        guard let stringValue = prefixString else {
            return
        }
        self = stringValue + self
    }
}