2013-02-02 57 views
5

我想在NSString B的前面追加NSString A。是否有內置的方法追加到NSString的開始而不是NSString的結尾?追加到NSString方法的開頭

我知道我可以使用stringWithFormat,但是使用stringWithFormatstringByAppendingString將文本添加到NSString的末尾有什麼區別?

回答

34

如果你可以附加到一個字符串的末尾,你可以預先添加到字符串的開頭。

追加

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" 
4

您可以使用stringWithFormat太:

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

stringByAppendingString是的NSString,的一個實例方法stringWithFormat是類NSString的類方法。

+0

例如是否VS類對NSString的 「B」 有什麼影響?使用其中一個的好處是什麼? – AnsonL

+0

你必須學習面向對象編程,這是一個基本原理 –

+0

我明白,實例和類方法是不同的,但是一旦你使用過,這會如何影響可用性pf NSString「B」? – AnsonL

2

可能值得指出的是,沒有「將一個字符串附加到另一個字符串」之類的東西。 NSString是不可變的。

在任何情況下,您都會「創建一個由一個字符串組成的新字符串」。

將新創建的字符串放回到同一個變量中並不重要。

你永遠不會「將文本添加到字符串末尾」。

9

單線解決方案:

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

在這裏,我的解決方案在斯威夫特:

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 
    } 
}