Programmieren mit Swift - Für macOS und iOS
Programmieren mit Swift - Für macOS und iOS

Rechnen mit Zeichenketten

Frage:
Ich habe zwei Zahlen, die aber als Zeichenketten vom Typ NSString vorliegen. Wie kann ich trotzdem mit ihnen rechnen?

Antwort:
Mit Zeichenketten zu rechnen ist schwierig, wenn man nicht möchte, dass aus 5 + 5 die 55 wird. In der Regel ist es notwendig, den NSString zunächst in einen Zahlentyp umzuwandeln. Das kann NSScanner für uns erledigen.
NSString*s1 = @"123456";
NSString *s2 = @"112233";

NSScanner *scanner = [NSScanner scannerWithString:s1];
double d1 = 0;
BOOL b1 = [scanner scanDouble:&d1];
if (b1)
    NSLog(@"Erfolgreich umgewandelt");

scanner = [NSScanner scannerWithString:s2];
double d2 = 0;
BOOL b2 =[scanner scanDouble:&d2];
if (b2)
    NSLog(@"Erfolgreich umgewandelt");

NSLog(@"%f + %f = %f",d1,d2,d1+d2);
Der Rückgabewert von scanDouble oder andere Konvertierungsmethoden von NSScanner ist ein BOOL-Typ, welcher angibt, ob die Umwandlung erfolgreich durchgeführt werden konnte. Man ist aber nicht verpflichtet, diesen Wert auszuwerten. Da die Methode nur einen Rückgabewert haben kann, wird die Variable für den Zahlentyp, hier double, als Referenz übergeben und enthält nach erfolgreicher Umwandlung die in der Zeichenkette gefundene Zahl.