web-dev-qa-db-ja.com

Powershell:文字列を数値に変換する

わかりました、私は初心者です-これで迷子になりました:

WMIからのドライブデータがキャプチャされるアレイがあります。

$drivedata = $Drives | select  @{Name="Kapazität(GB)";Expression={$_.Kapazität}}

アレイには次の値があります(2ドライブ):

@{Kapazität(GB)=1.500} @{Kapazität(GB)=1.500}

1.500を1500に変換したいだけです

私はここで見つけたさまざまな提案を試みましたが、それを機能させることができませんでした:

-Replace ".","" and [int]は機能しません。正規表現が正しいかどうか、およびこれを行う方法はわかりません。

事前に多くの感謝を助けてください。

34
MMAX

文字列をintとしてキャストするだけでは、確実に機能しません。 int32に変換する必要があります。これには、.NET convertクラスとそのToInt32メソッドを使用できます。このメソッドには、メイン入力としてstring$strNum)、および変換する数値システムのbase number10)が必要です。これは、10進法(10基数)だけでなく、たとえば2進法(基数2)に変換できるためです。

このメソッドを試してください:

[string]$strNum = "1.500"
[int]$intNum = [convert]::ToInt32($strNum, 10)

$intNum
50
Roderick Bant

数値を含む変数を文字列として1で割るだけです。PowerShellは結果を自動的に整数に変換します。

$ a = 15; $ b = 2; $ a + $ b-> 152

ただし、前に分割した場合:

$ a/1 + $ b/1-> 17

21
user5197928

このトピックは検証済みの解決策を受け取ったことがないため、解決策を求めた2つの問題に対する簡単な解決策を提供できます。

  1. 「。」を置き換える値が文字列の場合の文字

文字列クラスは、更新する文字列オブジェクトのreplaceメソッドを提供します。

例:

$myString = $myString.replace(".","") 
  1. 文字列値を整数に変換する

System.int32クラス(または単にpowershellの[int])には、「TryParse」というメソッドがあります。このメソッドは、文字列が整数かどうかを示すブール値を返すだけでなく、整数の値を既存のtrueを返す場合、参照による変数。

例:

[string]$convertedInt = "1500"
[int]$returnedInt = 0
[bool]$result = [int]::TryParse($convertedInt, [ref]$returnedInt)

質問で最初に提起した問題に対処することを望みます。

8
cloud_hero