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.
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:
Kode untuk NSString
format masuk persen adalah %%
. Ini juga berlaku untuk NSLog()
dan printf()
format.
NSLog
memperlakukan argumen pertamanya sebagai format string, tetapi Anda telah memformat string menggunakan stringWithFormat:
. Katakan saja NSLog(@"%@%%", self.Ptextfield.text)
.
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
Jika itu membantu dalam beberapa kasus, dimungkinkan untuk menggunakan karakter unicode:
NSLog(@"Test percentage \uFF05");
\uFF05
bekerja untuk saya ketika itu adalah bagian dari NSString
dalam UILocalNotification
, tidak %%
. Terima kasih!
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
.
Sepertinya jika %%
diikuti dengan %@
, NSString
akan pergi ke beberapa kode aneh coba ini dan ini berhasil untuk saya
NSString *str = [NSString stringWithFormat:@"%@%@%@", @"%%",
[textfield text], @"%%"];
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!