Format string, integer dengan nol di depannya

97

Saya menggunakan kode ini:

NSString* strName = [NSString stringWithFormat:@"img_00%d.jpg", pp];

dan berfungsi dengan baik, tetapi jika pp mengambil nilai 10 misalnya saya ingin memiliki img_010.jpg sebagai hasilnya, dan bukan img_0010.jpg ... bagaimana saya bisa memformat string ??

Terima kasih

ghiboz.dll
sumber

Jawaban:

249

Gunakan format string "img_%03d.jpg"untuk mendapatkan angka desimal dengan tiga digit dan nol di depan.

Gumbo
sumber
5

Untuk anak cucu: ini berfungsi dengan angka desimal.

NSString *nmbrStr = @"0033620340000" ;
NSDecimalNumber *theNum = [[NSDecimalNumber decimalNumberWithString:nmbrStr]decimalNumberByAdding: [NSDecimalNumber one]] ;     
NSString *fmtStr = [NSString stringWithFormat:@"%012.0F",[theNum doubleValue]] ;

Meskipun informasi ini sulit ditemukan, sebenarnya didokumentasikan di sini di paragraf kedua di bawah Dasar-dasar Pemformatan. Cari karakter%.

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Strings/Articles/FormatStrings.html

McUsr
sumber
1
Perhatikan di sini bahwa "12" di @"%012.0F"mengacu pada jumlah digit total, jadi termasuk koma desimal dan apapun di sebelah kanan.
bcattle
Untuk menambah komentar bcattle, ini juga termasuk apa saja yang ada di kanan . Untuk menampilkan -012.34, Anda harus menggunakan@"%07.2f"
n_b