Bagaimana cara menambahkan tanda persen ke NSString


456

Saya ingin memiliki tanda persentase di string saya setelah satu digit. Sesuatu seperti ini: 75%.

Bagaimana saya bisa melakukan ini? Saya mencoba:

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

Tetapi itu tidak berhasil untuk saya.

Jawaban:


943

Kode untuk NSStringformat masuk persen adalah %%. Ini juga berlaku untuk NSLog()dan printf()format.


Saya mencoba NSLog ([NSString stringWithFormat: @ "% @ %%", self.Ptextfield.text]); dan hasilnya adalah hanya menggunakan uitextfield.text
Ali

2
NSLogmemperlakukan argumen pertamanya sebagai format string, tetapi Anda telah memformat string menggunakan stringWithFormat:. Katakan saja NSLog(@"%@%%", self.Ptextfield.text).
rob mayoff

Ini tidak berfungsi untuk UILocalNotification. Lihat stackoverflow.com/a/27971848/2446178 .
JRam13

139

Kode melarikan diri untuk tanda persen adalah "%%", sehingga kode Anda akan terlihat seperti ini

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

Juga, semua penentu format lainnya dapat ditemukan di Artikel Konseptual String


Dan alasan mengapa \% tidak berfungsi adalah backslash adalah karakter pelarian untuk string literal, jadi mengetikkan \% dalam kode sumber Anda benar-benar membuat string yang berisi karakter persen tunggal.
gnasher729

17

Jika itu membantu dalam beberapa kasus, dimungkinkan untuk menggunakan karakter unicode:

NSLog(@"Test percentage \uFF05");

\uFF05bekerja untuk saya ketika itu adalah bagian dari NSStringdalam UILocalNotification, tidak %%. Terima kasih!
Scott

4
Itu adalah "tanda persen lebar penuh" untuk digunakan dengan karakter Cina atau Jepang, sangat jauh berbeda dari karakter persen biasa.
gnasher729

7

Jawaban yang diterima tidak berfungsi untuk UILocalNotification. Untuk beberapa alasan, %%%%(tanda 4 persen) atau karakter unicode ' \uFF05' hanya berfungsi untuk ini.

Jadi untuk rekap, saat memformat string Anda dapat Anda gunakan %%. Namun, jika string Anda adalah bagian dari UILocalNotification, gunakan %%%%atau \uFF05.


6

Sepertinya jika %%diikuti dengan %@, NSStringakan pergi ke beberapa kode aneh coba ini dan ini berhasil untuk saya

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

4

kode berikut ini.

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

akan menampilkan: % Bhupi%


0

iOS 9.2.1, Xcode 7.2.1, ARC diaktifkan

Anda selalu dapat menambahkan '%' dengan sendirinya tanpa penentu format lain dalam string yang Anda tambahkan, seperti ...

int test = 10;

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

Untuk iOS7.0 +

Untuk memperluas jawaban ke karakter lain yang dapat menyebabkan konflik, Anda dapat memilih untuk menggunakan:

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

Ditulis langkah demi langkah seperti ini:

int test = 10;

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

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

Atau tangan pendek:

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

Terima kasih kepada semua kontributor asli. Semoga ini membantu. Bersulang!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.