2013-02-02 14 views
5

Chciałbym dołączyć NSString A przed NSString B. Czy istnieje wbudowana metoda dołączania do początku NSString zamiast końca NSString?Dodaj do początku metody NSString

Wiem, że mogę użyć stringWithFormat, ale jaka jest różnica między używaniem stringWithFormat i stringByAppendingString do dodawania tekstu na końcu NSString?

Odpowiedz

34

Jeśli możesz dołączyć na końcu łańcucha, możesz przejść do początku łańcucha.

Dołącz

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

Prepend

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

Można użyć stringWithFormat też:

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

stringByAppendingString jest metoda instancji NSString, stringWithFormat to metoda klasy klasy NSString.

+0

Czy wystąpienie vs klasie mają żadnego wpływu na NSString "B"? Jaka byłaby przewaga korzystania z jednej nad drugą? – AnsonL

+0

Musisz uczyć się programowania obiektowego, jest to podstawowa zasada –

+0

Rozumiem, że metody instancji i klas są różne, ale jak to wpływa na użyteczność pf NSString "B", gdy już go użyłeś? – AnsonL

2

Warto chyba zauważyć, że nie ma czegoś takiego jak "dołączanie jednego ciągu do drugiego". NSString jest niezmienny.

W każdym przypadku "tworzysz nowy ciąg, który składa się z jednego ciągu po drugim".

Nie ma znaczenia, że ​​nowo utworzony ciąg z powrotem do tej samej zmiennej.

Nigdy nie "dodajesz tekstu na końcu ciągu znaków".

9

Jedno rozwiązanie linia:

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

Tutaj mam rozwiązanie w 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 
    } 
}