Supondo que você queira um tamanho de campo 2 com zeros à esquerda, você faria isso:
import Foundation
for myInt in 1 ... 3 {
print(String(format: "%02d", myInt))
}
resultado:
01
02
03
Isso requer import Foundation
que, tecnicamente, não faça parte da linguagem Swift, mas um recurso fornecido pela Foundation
estrutura. Observe que os dois são incluídos import UIKit
e, portanto, não é necessário importá-lo novamente se você já importou ou .import Cocoa
Foundation
Cocoa
UIKit
A cadeia de formato pode especificar o formato de vários itens. Por exemplo, se você estiver tentando formatar 3
horas, 15
minutos e 7
segundos, 03:15:07
poderá fazer o seguinte:
let hours = 3
let minutes = 15
let seconds = 7
print(String(format: "%02d:%02d:%02d", hours, minutes, seconds))
resultado:
03:15:07
println("0\(myInt)")
a sua sugestão. Isso usaria a classe String nativa do Swift, em vez de passar pela formatação NSString.String(format: "%03d", myInt)
vai te dar"000", "001", ... , "099", "100"
.-3, -9
ocorrer um valor semelhante , ele ainda retornará o mesmo sem um zero inicial.Com o Swift 5, você pode escolher um dos três exemplos mostrados abaixo para resolver seu problema.
# 1 Usando
String
oinit(format:_:)
inicializadorFoundation
fornece ao SwiftString
uminit(format:_:)
inicializador.init(format:_:)
tem a seguinte declaração:O seguinte código do Playground mostra como criar um
String
formatadoInt
com pelo menos dois dígitos inteiros usandoinit(format:_:)
:# 2 Usando
String
oinit(format:arguments:)
inicializadorFoundation
fornece ao SwiftString
uminit(format:arguments:)
inicializador.init(format:arguments:)
tem a seguinte declaração:O seguinte código do Playground mostra como criar um
String
formatadoInt
com pelo menos dois dígitos inteiros usandoinit(format:arguments:)
:# 3 Usando
NumberFormatter
Fundação fornece
NumberFormatter
. A Apple afirma sobre isso:O código do Playground a seguir mostra como criar um
NumberFormatter
que retornaString?
de umInt
com pelo menos dois dígitos inteiros:fonte
Para o preenchimento esquerdo, adicione uma extensão de string como esta:
Swift 2.0 +
Swift 3.0 +
Usando este método:
fonte
Swift 3.0+
Padding-left
String
extensão semelhante àpadding(toLength:withPad:startingAt:)
deFoundation
Uso:
fonte
withPad
argumento passado for mais do que um único caractere.Swift 5
O @imanuo answers já é ótimo, mas se você estiver trabalhando com um aplicativo cheio de números, considere uma extensão como esta:
Dessa forma, você pode ligar para qualquer lugar:
fonte
no Xcode 8.3.2, iOS 10.3 Isso é bom agora
Sample1:
Sample2:
fonte
As outras respostas são boas se você estiver lidando apenas com números usando a sequência de formatação, mas isso é bom quando você pode ter sequências que precisam ser preenchidas (embora seja um pouco diferente da pergunta feita, parece similar em espírito). Além disso, tenha cuidado se a corda for maior que a almofada.
Resultado
"-----a str"
fonte
Detalhes
Xcode 9.0.1, swift 4.0
Soluções
Dados
Solução 1
Solução 2
Solução 3
fonte
Diferente das outras respostas que usam um formatador, você também pode adicionar um texto "0" na frente de cada número dentro do loop, assim:
Mas o formatador geralmente é melhor quando você precisa adicionar, suponha uma quantidade designada de 0s para cada número separado. No entanto, se você só precisar adicionar um 0, é apenas uma escolha.
fonte