Ok, je suis débutant - et perdu avec ceci:
J'ai un tableau où certaines données de disque de WMI sont capturées:
$drivedata = $Drives | select @{Name="Kapazität(GB)";Expression={$_.Kapazität}}
Le tableau a ces valeurs (2 lecteurs):
@{Kapazität(GB)=1.500} @{Kapazität(GB)=1.500}
et je veux juste convertir le 1.500 en un nombre 1500
J'ai essayé différentes suggestions que j'ai trouvées ici, mais je ne pouvais pas le faire fonctionner:
-Replace ".","" and [int]
ne fonctionne pas. Je ne suis pas sûr si regex serait correct et comment faire cela.
Pour l'aide, merci beaucoup d'avance.
Transformer la chaîne en tant que int
ne fonctionnera pas de manière fiable. Vous devez le convertir en un int32
. Pour cela, vous pouvez utiliser la classe .NET convert
et ses ToInt32
méthode. La méthode nécessite un string
($strNum
) comme entrée principale et le base number
(10
) pour que le système numérique convertisse. En effet, vous pouvez non seulement convertir en système décimal (le fichier 10
numéro de base), mais aussi, par exemple, le système binaire (base 2).
Essayez cette méthode:
[string]$strNum = "1.500"
[int]$intNum = [convert]::ToInt32($strNum, 10)
$intNum
Divisez simplement la variable contenant des nombres en tant que chaîne par 1. PowerShell convertit automatiquement le résultat en entier.
$ a = 15; $ b = 2; $ a + $ b -> 152
Mais si vous le divisez avant:
$ a/1 + $ b/1 -> 17
Étant donné que ce sujet n'a jamais reçu de solution vérifiée, je peux proposer une solution simple aux deux problèmes pour lesquels vous voyez des solutions.
La classe string propose une méthode de remplacement pour l'objet string que vous souhaitez mettre à jour:
Exemple:
$myString = $myString.replace(".","")
La classe system.int32 (ou simplement [int] dans powershell) dispose d'une méthode appelée "TryParse" qui non seulement renvoie un booléen indiquant si la chaîne est un entier, mais renvoie également la valeur de cet entier dans un fichier existant. variable par référence si elle retourne true.
Exemple:
[string]$convertedInt = "1500"
[int]$returnedInt = 0
[bool]$result = [int]::TryParse($convertedInt, [ref]$returnedInt)
J'espère que cela répond à la question que vous avez initialement soulevée dans votre question.