Zakładając, że chcesz mieć pole o długości 2 z wiodącymi zerami, zrobiłbyś to:
import Foundation
for myInt in 1 ... 3 {
print(String(format: "%02d", myInt))
}
wynik:
01
02
03
Wymaga to, import Foundation
więc technicznie, nie jest to część języka Swift, ale możliwości zapewniane przez Foundation
framework. Pamiętaj, że oba zawierają import UIKit
i tak, więc nie trzeba importować go ponownie, jeśli już zaimportowałeś lub .import Cocoa
Foundation
Cocoa
UIKit
Ciąg formatu może określać format wielu elementów. Na przykład, jeśli próbujesz sformatować 3
godziny, 15
minuty i 7
sekundy, 03:15:07
możesz to zrobić w następujący sposób:
let hours = 3
let minutes = 15
let seconds = 7
print(String(format: "%02d:%02d:%02d", hours, minutes, seconds))
wynik:
03:15:07
println("0\(myInt)")
twoją sugestię. Użyłoby to rodzimej klasy String Swift zamiast przechodzić przez formatowanie NSString.String(format: "%03d", myInt)
da ci"000", "001", ... , "099", "100"
.-3, -9
występuje, jeśli występuje wartość podobna. Nadal zwraca to samo bez wiodącego zera.W Swift 5 możesz wybrać jeden z trzech przykładów pokazanych poniżej, aby rozwiązać problem.
# 1. Korzystanie
String
zinit(format:_:)
inicjalizatoraFoundation
zapewnia SwiftString
doinit(format:_:)
inicjatora.init(format:_:)
ma następującą deklarację:Poniższy kod placu zabaw pokazuje, jak utworzyć
String
sformatowany przyInt
użyciu co najmniej dwóch cyfr całkowitych przy użyciuinit(format:_:)
:# 2. Korzystanie
String
zinit(format:arguments:)
inicjalizatoraFoundation
zapewnia SwiftString
doinit(format:arguments:)
inicjatora.init(format:arguments:)
ma następującą deklarację:Poniższy kod placu zabaw pokazuje, jak utworzyć
String
sformatowany przyInt
użyciu co najmniej dwóch cyfr całkowitych przy użyciuinit(format:arguments:)
:# 3. Za pomocą
NumberFormatter
Fundacja zapewnia
NumberFormatter
. Apple mówi o tym:Poniższy kod przedstawia zabaw dla dzieci, jak stworzyć
NumberFormatter
zwracającejString?
od aInt
o co najmniej dwóch cyfr całkowitych:źródło
Dla lewego dopełnienia dodaj przedłużenie łańcucha takie jak to:
Swift 2.0 +
Swift 3.0 +
Za pomocą tej metody:
źródło
Swift 3.0+
Lewe
String
przedłużenie wyściółki podobne dopadding(toLength:withPad:startingAt:)
wFoundation
Stosowanie:
źródło
withPad
przekazany argument jest więcej niż pojedynczy znak.Szybki 5
Odpowiedzi @imanuo są już świetne, ale jeśli pracujesz z aplikacją pełną, możesz rozważyć takie rozszerzenie:
W ten sposób możesz dzwonić wszędzie:
źródło
w Xcode 8.3.2, iOS 10.3 To jest na razie dobre
Próbka 1:
Próbka 2:
źródło
Inne odpowiedzi są dobre, jeśli masz do czynienia tylko z liczbami za pomocą ciągu formatującego, ale jest to dobre, gdy możesz mieć ciągi, które wymagają uzupełnienia (choć wprawdzie nieco inne niż zadane pytanie, wydaje się podobne w duchu). Uważaj również, jeśli sznurek jest dłuższy niż podkładka.
Wynik
"-----a str"
źródło
Detale
Xcode 9.0.1, szybki 4.0
Rozwiązania
Dane
Rozwiązanie 1
Rozwiązanie 2
Rozwiązanie 3
źródło
W przeciwieństwie do innych odpowiedzi, które używają formatera, możesz również po prostu dodać tekst „0” przed każdą liczbą wewnątrz pętli, w następujący sposób:
Ale formatyzator jest często lepszy, gdy trzeba dodać, przypuszczalnie określoną liczbę zerową dla każdej oddzielnej liczby. Jeśli jednak musisz dodać tylko jedno 0, to naprawdę jest to twój wybór.
źródło