10.06.2008
NSString und NSMutableString
In diesem Artikel werden die Klassen NSString und NSMutableString kurz beschrieben. Außerdem wird die Anwendung einiger weniger ausgewählter Funktionen demonstriert.
void stringTest() { //Declare NSString NSString* zeichenkette; //Allocate and initialize NSString zeichenkette = [[NSString alloc] initWithString:@"Hello World!"]; //Print NSString NSLog(@"Zeichenkette: %@",zeichenkette); //Print Length of the NSString NSLog(@"Length: %i", [zeichenkette length]); //Print Substring of the NSString NSLog(@"Substring: %@", [zeichenkette substringToIndex:5]); //Search for 'W' NSMutableCharacterSet* searchCharacters = [NSCharacterSet characterSetWithCharactersInString:@"W"]; //Start search NSRange resultRange = [zeichenkette rangeOfCharacterFromSet:searchCharacters]; //Print results NSLog(@"Gefunden: %i", resultRange.length); NSLog(@"Position: %i", resultRange.location); //Deallocation NSString [zeichenkette release]; }
Als erstes wird eine Variable zeichenkette deklariert, allokiert und initialisiert. Diese Variable wird anschließend ausgegeben. Danach werden die Funktionen length und substringToIndex aufgerufen und jeweils das Ergebnis ausgegeben.
Als Letztes wird die Suchfunktionalität von NSString demonstriert. Dazu wird eine Menge von Buchstaben NSMutableCharacterSet (in dem Beispiel nur ein Buchstabe) deklariert. Danach wird die Suche auf der Zeichenkette durchgeführt. Als Ergebnis erhält man ein Objekt von Typ NSRange. Dieses enthält die Anzahl der Fundstellen und die Position der Fundes.
Der "Nachteil" von NSString ist, daß der Wert und die Länge des Strings nicht verändert werden können. D.h. es ist nicht möglich neue Zeichen hinzuzufügen oder zu entfernen. Dies wurde aus Performance-Gründen so gemacht.
Abhilfe kann die Klasse NSMutableString schaffen. Dies zeigt das folgende Beispiel:
void stringMutableTest() { //Declare NSMutableString NSMutableString* zeichenkette; //Allocate and initialize NSMutableString zeichenkette = [[NSMutableString alloc] initWithString:@"Hello World!"]; //Append NSString [zeichenkette appendString:@" Hello Europe!"]; //Index NSString at index 5 [zeichenkette insertString:@" Hugo" atIndex:5]; //Print NSString NSLog(@"Zeichenkette: %@",zeichenkette); //Deallocation NSString [zeichenkette release]; }
Auch hier wird als erste die Variable zeichenkette deklariert, allokiert und initialisiert. Als nächstes wird mit der Funktion appendString eine Zeichenkette angehängt. Danach wird mit der Funktion insertString an der Position 5 der Wert Hugo eingefügt. Abschließend wird die komplette Zeichenkette ausgegeben.
Im Folgenden ist die Konsolenausgabe beider Funktionen zu sehen:
2008-06-10 18:40:35.551 ContainerTest[51085:10b] Zeichenkette: Hello World! 2008-06-10 18:40:35.552 ContainerTest[51085:10b] Length: 12 2008-06-10 18:40:35.553 ContainerTest[51085:10b] Substring: Hello 2008-06-10 18:40:35.553 ContainerTest[51085:10b] Gefunden: 1 2008-06-10 18:40:35.554 ContainerTest[51085:10b] Position: 6 2008-06-10 18:40:35.555 ContainerTest[51085:10b] Zeichenkette: Hello Hugo World! Hello Europe!