Ao lidar com números, é comum precisar deixá-los com uma quantidade específica de dígitos, completando com zeros à esquerda quando necessário. Por exemplo, deixando todos com cinco dígitos:
De: Para: 4 00004 27 00027 392 00392 4991 04991
Algumas linguagens contam com o formatador %d
, que permite especificar o número de dígitos, neste caso, %05d
. Um exemplo rápido em Shell:
$ printf %05d 123 00123
Em linguagens que não possuem este formatador, use a técnica do transbordo: primeiro encha o número com vários zeros à esquerda, depois faça um corte no ponto desejado, pegando somente os N dígitos da direita.
>>> n = "123" >>> z = "00000" + n >>> z '00000123' >>> z[-5:] '00123' >>>
Olá! :)
Aurélio, coloca esse post na categoria Shell também, porque acho que ela seria muito útil lá também… :)
Agradeço por sua atenção e parabéns pela dica!
Oi Eu :)
É que apesar dos exemplos em Shell e Python, essa dica serve para todas as linguagens, por isso caiu na categoria Misc. Privilegiar o Shell seria legal, mas injusto ;)
Valeu
Salve,
Grande Aurélio…massa o seu livro sobre ER.
Agora eu quero saber uma coisa.
Estou tentando fazer uma função em JavaScript que pega o tamanho de determinado campo input do do formulário e vai verificar se ele é igual ao tamanho padrão, caso não seja, completa, à esquerda, com zero.
Tipo assim:
valor do campo: 111 (tamanho do campo(tc) = 3 )
tamanho padrão(tp): 10
resultado final: 0000000111
Se poder me ajudar…estou tentando usar um for para concatenar ao conteudo do campo(value) a quantidade tm-tc de zeros ou seja, no exemplo seri 10-3=7 zeros. Mas está dando erro!
Valeu ai e muito sucesso!
Silas, não use o for! Siga as instruções da dica e use a técnica do transbordo:
<script>
var campo = “111”;
var tc = 10;
campo = “0000000000” + campo;
alert(campo.slice(-tc));
</script>
Obrigado.
Em Ruby pode ser assim: 4.to_s.rjust(5,’0′)
Em C#:
string resultado = “1”.PadLeft(5, ‘0’);
Sempre lembrando que Python possui os formatadores “%”:
>>> print “%05d” % (123)
00123
E para fazer o contrário?
No caso, tenho uma string “0000123” e quero tirar somente os zeros à esquerda.
-T
Para tirar zeros à esquerda, pode ser mais fácil ou mais difícil dependendo da linguagem.
Thiago, uma maneira simples é converter para inteiro e depois converter para string novamente. Por exemplo, em Python:
>>> str(int(“0001234”))
‘1234’
Ou usar métodos de string, sem conversão de tipos, para tirar os zeros à esquerda, como o lstrip() do Python:
>>> “0001234”.lstrip(‘0’)
‘1234’
Imagino que outras linguagens como Ruby, Perl e PHP também tenham algo parecido com o lstrip().
Em PHP pode ser assim: str_pad($valor, 5, “0”, STR_PAD_LEFT)
Em PHP
http://mx.php.net/manual/en/function.str-pad.php
thx
Grande dica amigo! Excelente artigo. Foi muito útil!!
Rodolfo Nogueira
Curitiba Paraná – UFPR Música
Em python2.7 e posteriores:
b = ‘123’
>>> b.rjust(5,’0′) # inserindo a direita
‘00123’
ou:
>>> b.ljust(5,’0′) # inserindo a esquerda
‘12300’