So fügen Sie NSString ein Prozentzeichen hinzu

456

Ich möchte nach einer Ziffer ein Prozentzeichen in meiner Zeichenfolge haben. So etwas in der Art: 75%.

Wie kann ich das machen lassen? Ich habe es versucht:

[NSString stringWithFormat:@"%d\%", someDigit];

Aber es hat bei mir nicht funktioniert.

Ilya Suzdalnitski
quelle

Antworten:

943

Der Code für das prozentuale NSStringAnmeldeformat lautet %%. Dies gilt auch für NSLog()und printf()Formate.

Mouviciel
quelle
Ich versuche NSLog ([NSString stringWithFormat: @ "% @ %%", self.Ptextfield.text]); und die Ausgabe ist jsut die uitextfield.text
Ali
2
NSLogbehandelt das erste Argument als Formatzeichenfolge, aber Sie haben die Zeichenfolge bereits mit formatiert stringWithFormat:. Sag einfach NSLog(@"%@%%", self.Ptextfield.text).
Rob Mayoff
Dies funktioniert nicht für UILocalNotification. Siehe stackoverflow.com/a/27971848/2446178 .
JRam13
139

Der Escape-Code für ein Prozentzeichen lautet "%%", sodass Ihr Code folgendermaßen aussehen würde

[NSString stringWithFormat:@"%d%%", someDigit];

Alle anderen Formatspezifizierer finden Sie auch unter Artikel zu konzeptionellen Zeichenfolgen

Binärbob
quelle
Der Grund, warum \% nicht funktioniert, ist, dass Backslash das Escape-Zeichen für Zeichenfolgenliterale ist. Wenn Sie also \% in Ihren Quellcode eingeben, wird tatsächlich eine Zeichenfolge erstellt, die ein einzelnes Prozentzeichen enthält.
Gnasher729
17

Wenn dies in einigen Fällen hilfreich ist, können Sie das Unicode-Zeichen verwenden:

NSLog(@"Test percentage \uFF05");
Resh32
quelle
\uFF05funktioniert für mich, wenn es Teil des NSStringIn ist UILocalNotification, nicht %%. Vielen Dank!
Scott
4
Dies ist ein "Prozentzeichen in voller Breite" für die Verwendung mit chinesischen oder japanischen Zeichen, das sich stark von einem normalen Prozentzeichen unterscheidet.
Gnasher729
7

Die akzeptierte Antwort funktioniert nicht für UILocalNotification. Aus irgendeinem Grund funktionieren %%%%(4-Prozent-Zeichen) oder das Unicode-Zeichen \uFF05nur dafür.

Um es noch einmal zusammenzufassen: Wenn Sie Ihre Zeichenfolge formatieren, können Sie sie verwenden %%. Wenn Ihre Zeichenfolge jedoch Teil einer UILocalNotification ist, verwenden Sie %%%%oder \uFF05.

JRam13
quelle
6

scheint, wenn %%mit einem gefolgt %@, wird der NSStringWille zu einigen seltsamen Codes gehen, versuche dies und das hat bei mir funktioniert

NSString *str = [NSString stringWithFormat:@"%@%@%@", @"%%", 
                 [textfield text], @"%%"]; 
user1483392
quelle
4

Verwenden Sie den folgenden Code.

 NSString *searchText = @"Bhupi"
 NSString *formatedSearchText = [NSString stringWithFormat:@"%%%@%%",searchText];

wird ausgegeben: % Bhupi%

Bhoopi
quelle
0

iOS 9.2.1, Xcode 7.2.1, ARC aktiviert

Sie können das '%' jederzeit selbst anhängen, ohne andere Formatbezeichner in der Zeichenfolge, die Sie anhängen, wie z.

int test = 10;

NSString *stringTest = [NSString stringWithFormat:@"%d", test];
stringTest = [stringTest stringByAppendingString:@"%"];
NSLog(@"%@", stringTest);

Für iOS7.0 +

Um die Antwort auf andere Zeichen zu erweitern, die zu Konflikten führen können, können Sie Folgendes verwenden:

- (NSString *)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet *)allowedCharacters

Schritt für Schritt ausgeschrieben sieht es so aus:

int test = 10;

NSString *stringTest = [NSString stringWithFormat:@"%d", test];
stringTest = [[stringTest stringByAppendingString:@"%"] 
             stringByAddingPercentEncodingWithAllowedCharacters:
             [NSCharacterSet alphanumericCharacterSet]];
stringTest = [stringTest stringByRemovingPercentEncoding];

NSLog(@"percent value of test: %@", stringTest);

Oder kurze Hand:

NSLog(@"percent value of test: %@", [[[[NSString stringWithFormat:@"%d", test] 
stringByAppendingString:@"%"] stringByAddingPercentEncodingWithAllowedCharacters:
[NSCharacterSet alphanumericCharacterSet]] stringByRemovingPercentEncoding]);

Vielen Dank an alle ursprünglichen Mitwirkenden. Hoffe das hilft. Prost!

serge-k
quelle