3 Stimmen

Dynamisch die Anzahl der Variablen in NSStringWithFormat ändern

Sagen wir, ich habe eine Zeichenfolge wie diese:

NSString *myString = [NSString stringWithFormat:@"%@%@%@%@%@",variable1,variable2,variable3,variable4,variable5];

und wenn variable2 ist nil, möchte ich das nicht in meiner Zeichenfolge haben, so wie das:

NSString *myString = [NSString stringWithFormat:@"%@%@%@%@",variable1,variable3,variable4,variable5];

Frage

Gibt es einen Weg, dies zu tun, ohne viele if-Anweisungen zu haben?

4voto

trojanfoe Punkte 117964

Verwenden Sie nicht [NSString stringWithFormat:], sondern erstellen Sie stattdessen ein NSMutableString und hängen Sie die Zeichenfolgen bei Bedarf an:

NSMutableString *s = [[NSMutableString alloc] init];
if (variable1)
    [s appendString:variable1];
if (variable2)
    [s appendString:variable2];
if (variable3)
    [s appendString:variable3];
if (variable4)
    [s appendString:variable4];
if (variable5)
    [s appendString:variable5];

(Entschuldigung, ich habe Ihren Hinweis zu "nicht zu vielen if-Anweisungen" übersehen, aber ich glaube, dass es nicht vermieden werden kann).

1voto

Steven Kramer Punkte 8423

Der einfachste Weg ist, den komprimierten Ternäroperator zu verwenden, um ein Null durch einen leeren String zu ersetzen. Verwenden Sie eine leicht gekürzte Version Ihres Beispiels:

NSString *myString = [NSString stringWithFormat:@"%@%@",variable1 ?: @"",variable2 ?: @""];

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X