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!