Como preencher strings com zeros em Ruby

1
unitelife 2019-11-21 14:43.

Eu tenho uma situação em que tenho uma matriz que possui valores alfanuméricos.

Estou tentando percorrê-los e imprimir os valores com zeros preenchidos.

Quando eu tenho uma matriz e faço um loop por ela normalmente, funciona bem:

acct = ["123425326AA", "234123412341234AA", "12342342CP", "12342314234", "5"]

acct.each { |acct| puts acct }

Output:
$ruby main.rb
123425326AA
234123412341234AA
12342342CP
12342314234
5

No entanto, quando tento jogar com zeros preenchidos, encontro problemas. Já tentei brincar com ele, %#dmas não estou entendendo. Por exemplo, estou tentando preenchê-lo com 23 "0" s usando %23dno loop.

O tipo de saída que procuro é o seguinte:

000000000000123425326AA
000000234123412341234AA
000000000000012342342CP
00000000000012342314234
00000000000000000000005

Eu tentei brincar com este código e ele mencionou algo sobre inteiros e meus valores de array contêm alguns alfas e não tenho certeza se essa é a causa raiz. Mas aqui estão alguns exemplos de código com o qual eu estava tentando brincar.

acct.each { |i| puts "%23d" % i }

Output:
$ruby main.rb
main.rb:17:in `%': invalid value for Integer(): "123425326AA" (ArgumentError)
    from main.rb:17:in `block in <main>'
    from main.rb:17:in `each'
    from main.rb:17:in `<main>'

A partir daqui, tentei alterar a ordem do meu array para o seguinte e funcionou parcialmente e foi capaz de processar os valores que eram apenas números, mas falhou quando atingiu um valor alfanumérico. Além disso, ele também não colocou 0s, mas o substituiu por uma quantidade X de espaços.

acct = ["5", "12342314234", "234123412341234AA", "12342342CP", "123425326AA"]
acct.each { |acct| puts "%23d" % acct }

Output:
$ruby main.rb
                      5
            12342314234
main.rb:18:in `%': invalid value for Integer(): "234123412341234AA" (ArgumentError)
    from main.rb:18:in `block in <main>'
    from main.rb:18:in `each'
    from main.rb:18:in `<main>'

Acho que algum tipo de formatação é necessário, mas não tenho certeza de como implementá-lo. Eu vi em alguns posts onde eles adicionariam, int.to_smas não tinha certeza:

acct.each { |acct| puts "%23d" % acct.to_s }

2 answers

7
Amadan 2019-11-21 14:57.

Não é uma função de preenchimento zero para Cordas em Ruby:

puts acct.rjust(23, '0')
1
tadman 2019-11-21 14:50.

Não há função de preenchimento de zero para Strings em Ruby, mas fazer a sua própria não é difícil:

def zero_pad(str, length)
  '0' * (length - str.length) + str
end

Editar : Amadan apontou lá é tal função um!

MORE COOL STUFF

Cate Blanchett dormiu com o marido depois de 3 dias juntos e ainda está casada com ele 25 anos depois

Cate Blanchett dormiu com o marido depois de 3 dias juntos e ainda está casada com ele 25 anos depois

Cate Blanchett desafiou os conselhos típicos de namoro quando conheceu o marido.

Por que Michael Sheen é um ator sem fins lucrativos

Por que Michael Sheen é um ator sem fins lucrativos

Michael Sheen é um ator sem fins lucrativos, mas o que exatamente isso significa?

Hallmark Star Colin Egglesfield Pratos Emocionantes Encontros de Fãs no RomaDrama Live! [Exclusivo]

Hallmark Star Colin Egglesfield Pratos Emocionantes Encontros de Fãs no RomaDrama Live! [Exclusivo]

A estrela da Hallmark Colin Egglesfield falou sobre emocionantes encontros com fãs no RomaDrama Live! além de seu programa INSPIRE na convenção.

Por que você não pode transmitir 'Exposição do Norte' online

Por que você não pode transmitir 'Exposição do Norte' online

Você terá que tirar o pó de um Blu-ray ou DVD player para ver por que Northern Exposure se tornou um dos programas mais populares dos anos 90.

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

Como a matéria branca ajuda a função da matéria cinzenta do cérebro

Como a matéria branca ajuda a função da matéria cinzenta do cérebro

Todos nós já ouvimos falar da massa cinzenta do cérebro, mas e a massa branca? O que isso faz?

Doe seu cabelo para ajudar a manter nossa água limpa

Doe seu cabelo para ajudar a manter nossa água limpa

Aparas de cabelo de salões e doações pessoais podem ser reaproveitadas como tapetes que absorvem derramamentos de óleo e ajudam a proteger o meio ambiente.

Um olhar sobre os casamentos mais memoráveis ​​da Casa Branca

Um olhar sobre os casamentos mais memoráveis ​​da Casa Branca

Apenas algumas pessoas se casaram na Casa Branca nos últimos 200 anos. Quem eram eles e o que é necessário para marcar um casamento lá?

O Mercedes-AMG C63 S 2015 é perfeito, exceto por três coisas

O Mercedes-AMG C63 S 2015 é perfeito, exceto por três coisas

Algumas coisas merecem ser repetidas. Por exemplo, tendo a insistir em como o valor supera o preço e que você nunca deve se contentar com o mundano só porque é tecnicamente a escolha mais segura.

DeAndre Jordan descarta o agente que talvez Sorta o empurrou para assinar com Mavs

DeAndre Jordan descarta o agente que talvez Sorta o empurrou para assinar com Mavs

Ei, lembra de toda aquela merda com DeAndre Jordan em julho? Não? Deixe-me lembrá-lo brevemente. Em 3 de julho, os poderes relataram que Jordan escolheu se juntar aos Mavericks na agência gratuita, mas cinco dias depois vieram relatos de que Jordan estava tagarelando e os Clippers estavam tentando cortejá-lo de volta.

O Microsoft Translator pode traduzir com voz, texto e o seu relógio

O Microsoft Translator pode traduzir com voz, texto e o seu relógio

Android: os aplicativos de tradução de idiomas não são novidade (o que é uma das frases mais legais que escrevi), mas o novo aplicativo Translator da Microsoft oferece alguns recursos interessantes. Além de traduzir entre 48 idiomas por texto ou voz, você pode até usar um relógio Android Wear para traduzir do seu pulso.

Retrato pintado por AI vende por $ 432.500

Retrato pintado por AI vende por $ 432.500

Uma pintura feita por um programa de inteligência artificial vendida no leilão da Christie's em Nova York na quinta-feira por $ 432.500 - muito mais do que os estimados $ 7.000 a $ 10.000. o coletivo de arte de Paris Óbvio.

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Rothschild's luggage got lost, but luckily she has an incredible closet to shop: Sister Paris Hilton's!

Carne de porco Mapo de Dawn Burrell e homus de Edamame

Carne de porco Mapo de Dawn Burrell e homus de Edamame

"Esta é uma indústria dominada por homens, e estou feliz por ser uma das pessoas que quebrou o molde para ajudar as mulheres de cor", diz Top Chef: finalista de Portland e chef-parceiro do final de agosto em Houston. "Muitas vezes somos ignorados e às vezes não ensinados, mas isso vai mudar."

Kate Middleton passa um dia à beira da água em Londres, além de Jennifer Lopez, Julianne Hough e mais

Kate Middleton passa um dia à beira da água em Londres, além de Jennifer Lopez, Julianne Hough e mais

Kate Middleton passa um dia na água em Londres, além de Jennifer Lopez, Julianne Hough e muito mais. De Hollywood a Nova York e em todos os lugares, veja o que suas estrelas favoritas estão fazendo!

Jovem de 17 anos esfaqueado até a morte enquanto outros 4 ficaram feridos em um ataque de faca no rio Wisconsin

Jovem de 17 anos esfaqueado até a morte enquanto outros 4 ficaram feridos em um ataque de faca no rio Wisconsin

Investigadores estão investigando se o grupo e o suspeito se conheciam antes do ataque

Aterrissagens na pista

Aterrissagens na pista

O final do verão e o outono são estações nostálgicas. Os postes de luz lançam sua luz sobre as ruas escorregadias pela chuva, e as folhas sob os pés – vermelho-alaranjado nas sombras do crepúsculo – são um lembrete de dias passados.

Imagine criar uma estratégia de conteúdo que realmente CONVERTE. É possível.

Imagine criar uma estratégia de conteúdo que realmente CONVERTE. É possível.

Em 2021, encorajo você a repensar tudo o que sabe sobre os clientes que atende e as histórias que conta a eles. Dê um passo para trás.

Uma perda gigantesca abriu meu coração para o amor

Uma perda gigantesca abriu meu coração para o amor

No dia do aniversário de 9 anos de Felix The Cat, lembro-me de uma das maiores perdas da minha vida adulta – minha Sophie em 2013. Escrevi este ensaio e o compartilhei brevemente nesta plataforma em 2013.

Quando você não pode ser a pessoa que a internet quer que você seja

Quando você não pode ser a pessoa que a internet quer que você seja

Odeio a palavra “naufrágio”. As pessoas se confortam em sua própria bússola moral e, ao fazê-lo, encontram-se julgando.

Language