关于iOS:追加到nsstring方法的开头

Append to beginning of NSString method

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

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


如果可以追加到字符串的结尾,则可以预先追加到字符串的开头。

追加

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

预置

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

单线解决方案:

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


也可以使用StringWithFormat:

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

StringByAppendingString是nsString的一个实例方法,StringWithFormat是nsString类的一个类方法。


可能值得指出的是,没有"将一个字符串附加到另一个字符串"这样的事情。nsstring是不可变的。

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

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

您永远不会"在字符串末尾添加文本"。


这里我有一个快速的解决方案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
    }
}