NSString'e yüzde işareti nasıl eklenir


456

Rakamdan sonra dizemde yüzde işareti olmasını istiyorum. Böyle bir şey:% 75.

Bunu nasıl yapabilirim? Denedim:

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

Ama benim için işe yaramadı.

Yanıtlar:


943

Yüzde işareti kod NSStringformatında olduğunu %%. Bu NSLog()ve printf()biçimler için de geçerlidir .


NSLog ([NSString stringWithFormat: @ "% @ %%", self.Ptextfield.text]); ve çıktı uitextfield.text jsut olduğunu
Ali

2
NSLogilk bağımsız değişkenine biçim dizesi gibi davranır, ancak dizeyi kullanarak biçimlendirdiniz stringWithFormat:. Sadece söyle NSLog(@"%@%%", self.Ptextfield.text).
rob mayoff

Bu UILocalNotification için çalışmaz. Bkz. Stackoverflow.com/a/27971848/2446178 .
JRam13

139

Yüzde işareti için kaçış kodu "%%", dolayısıyla kodunuz şöyle görünür

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

Ayrıca, diğer tüm format belirteçleri Kavramsal Dizeler Makaleleri'nde bulunabilir.


\% 'Nin çalışmamasının nedeni, ters eğik çizginin dize değişmezleri için kaçış karakteri olmasıdır, bu nedenle kaynak kodunuza \% yazmak aslında tek bir yüzde karakteri içeren bir dize oluşturur.
gnasher729

17

Bu bazı durumlarda yardımcı olursa, unicode karakterini kullanmak mümkündür:

NSLog(@"Test percentage \uFF05");

\uFF05o parçası olduğunda benim için çalışıyor NSStringin UILocalNotificationdeğil %%. Teşekkürler!
Scott

4
Bu, sıradan bir yüzde karakterinden çok farklı, Çince veya Japonca karakterlerle kullanım için bir "tam genişlik yüzde işareti" dir.
gnasher729

7

Kabul edilen cevap UILocalNotification için çalışmaz. Herhangi bir nedenle, %%%%(yüzde 4 işaret) veya unicode karakter ' \uFF05' sadece bunun için çalışır.

Özetlemek gerekirse, dizenizi biçimlendirirken kullanabilirsiniz %%. Ancak, dizeniz bir UILocalNotification öğesinin parçasıysa, %%%%veya öğesini kullanın \uFF05.


6

%%a ile takip edilirse %@, NSStringbazı garip kodlara gidecek bunu deneyin ve bu benim için çalıştı

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

4

uese aşağıdaki kod.

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

çıktı: % Bhupi%


0

iOS 9.2.1, Xcode 7.2.1, ARC etkin

'%' Karakterini her zaman eklediğiniz dizede başka bir format belirleyicisi olmadan ekleyebilirsiniz, örneğin ...

int test = 10;

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

İOS7.0 + için

Cevabı, çatışmanıza neden olabilecek diğer karakterlere genişletmek için kullanmayı seçebilirsiniz:

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

Adım adım yazılan şöyle görünür:

int test = 10;

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

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

Veya kısa el:

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

Tüm orijinal katılımcılara teşekkürler. Bu yardımcı olur umarım. Şerefe!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.