Dengan asumsi Anda menginginkan panjang bidang 2 dengan nol di depan, Anda akan melakukan ini:
import Foundation
for myInt in 1 ... 3 {
print(String(format: "%02d", myInt))
}
keluaran:
01
02
03
Ini membutuhkan secara import Foundation
teknis itu bukan bagian dari bahasa Swift tetapi kemampuan yang disediakan oleh Foundation
kerangka kerja. Perhatikan bahwa keduanya import UIKit
dan import Cocoa
termasuk Foundation
sehingga tidak perlu mengimpor lagi jika Anda sudah mengimpor Cocoa
atau UIKit
.
String format dapat menentukan format beberapa item. Misalnya, jika Anda mencoba memformat 3
jam, 15
menit , dan 7
detik, 03:15:07
Anda dapat melakukannya seperti ini:
let hours = 3
let minutes = 15
let seconds = 7
print(String(format: "%02d:%02d:%02d", hours, minutes, seconds))
keluaran:
03:15:07
println("0\(myInt)")
atas saran Anda. Itu akan menggunakan kelas String asli Swift bukannya melalui pemformatan NSString.String(format: "%03d", myInt)
akan memberimu"000", "001", ... , "099", "100"
.-3, -9
terjadi, masih mengembalikan yang sama tanpa nol di depan.Dengan Swift 5, Anda dapat memilih salah satu dari tiga contoh di bawah ini untuk menyelesaikan masalah Anda.
# 1. Menggunakan
String
'sinit(format:_:)
initializerFoundation
menyediakan SwiftString
sebuahinit(format:_:)
initializer.init(format:_:)
memiliki deklarasi berikut:Kode Playground berikut menunjukkan cara membuat yang
String
diformatInt
dengan setidaknya dua digit bilangan bulat dengan menggunakaninit(format:_:)
:# 2. Menggunakan
String
'sinit(format:arguments:)
initializerFoundation
menyediakan SwiftString
sebuahinit(format:arguments:)
initializer.init(format:arguments:)
memiliki deklarasi berikut:Kode Playground berikut menunjukkan cara membuat yang
String
diformatInt
dengan setidaknya dua digit bilangan bulat dengan menggunakaninit(format:arguments:)
:# 3. Menggunakan
NumberFormatter
Yayasan menyediakan
NumberFormatter
. Apple menyatakan tentang itu:Kode Playground berikut menunjukkan cara membuat
NumberFormatter
yang kembaliString?
dariInt
dengan setidaknya dua digit bilangan bulat:sumber
Untuk bantalan kiri tambahkan ekstensi string seperti ini:
Swift 2.0 +
Swift 3.0 +
Menggunakan metode ini:
sumber
Swift 3.0+
String
Ekstensi padding kiri mirip denganpadding(toLength:withPad:startingAt:)
diFoundation
Pemakaian:
sumber
withPad
argumen yang diberikan lebih dari satu karakter.Cepat 5
@imanuo jawaban sudah bagus, tetapi jika Anda bekerja dengan aplikasi yang penuh angka, Anda dapat mempertimbangkan ekstensi seperti ini:
Dengan cara ini Anda dapat menelepon ke mana saja:
sumber
di Xcode 8.3.2, iOS 10.3 Itu bagus untuk saat ini
Contoh1:
Contoh2:
sumber
Jawaban lainnya bagus jika Anda hanya berurusan dengan angka menggunakan format string, tetapi ini bagus ketika Anda mungkin memiliki string yang perlu diisi (meskipun diakui sedikit berbeda dari pertanyaan yang diajukan, tampaknya semangatnya serupa). Juga, berhati-hatilah jika tali lebih panjang dari pad.
Keluaran
"-----a str"
sumber
Detail
Xcode 9.0.1, cepat 4.0
Solusi
Data
Solusi 1
Solusi 2
Solusi 3
sumber
Berbeda dengan jawaban lain yang menggunakan formatter, Anda juga bisa menambahkan teks "0" di depan setiap angka di dalam loop, seperti ini:
Tapi formatter sering lebih baik ketika Anda harus menambahkan anggaplah jumlah yang ditentukan 0s untuk setiap nomor terpisah. Jika Anda hanya perlu menambahkan satu 0, maka itu benar-benar hanya pilihan Anda.
sumber