web-dev-qa-db-fra.com

Format variable à 4 chiffres avec des zéros non significatifs

Un numéro de magasin peut être composé de 1 à 4 chiffres.

Le magasin # 26 serait 0026 en ce qui concerne le nom des appareils, mais j'aimerais donner aux techniciens la possibilité de taper 26 pour obtenir le même résultat.

Comment puis-je prendre cette variable et la formater pour qu'elle soit toujours à 4 chiffres en ajoutant les zéros de tête?

## Ask user for store number and affected AP number to query
$Global:Store = Read-Host "Store Number ";
$Global:apNumber= Read-Host "AP Number ";

## Clean up input for validity
IF($store.length -le 4) {
  $store = 
}
8
CodeSpent

Vous utiliseriez -format opérateur:

 '{0:d4}' -f $variable

https://ss64.com/ps/syntax-f-operator.html

ce qui précède fonctionnera si votre variable est un entier, sinon vous pouvez le convertir en entier:

'{0:d4}' -f [int]$variable
13
4c74356b41

Juste pour éviter que l'aide utile de PetSerAl ne soit gaspillée (si le commentaire est supprimé à un moment donné):

Mis à part l'utilisation de opérateur de format (-f), que je considérerais comme l'approche préférée, vous pouvez également utiliser des méthodes de formatage fournies par la valeur respective.

  • Si la valeur est une chaîne (comme cela semble être le cas dans votre cas), vous pouvez la remplir avec des zéros:

    '26'.PadLeft(4, '0')
    
  • Si la valeur est numérique, vous pouvez la formater comme une chaîne:

    (26).ToString('0000')
    
8
Ansgar Wiechers

Foreach versions de padleft et tostring. Le 0 dans le premier doit être cité:

'4' | % padleft 4 '0'
0004

4 | % tostring 0000
0004

Travailler avec une gamme:

1..10 | % tostring 0000

0001
0002
0003
0004
0005
0006
0007
0008
0009
0010

Avec un préfixe:

1..10 | % tostring COMP0000

COMP0001
COMP0002
COMP0003
COMP0004
COMP0005
COMP0006
COMP0007
COMP0008
COMP0009
COMP0010
2
js2010