2016-07-22 74 views
0

我有兩個powershell字符串數組(從導入csv),我需要比較。 它們是這樣的:PowerShell鑄造數組對象並更改數據類型

Array 1/File 1 
"Date","Descrption","Amount" 
"05/12/2016","Desc1","-40.00" 
"05/15/2016","Desc2","-50.00" 

Array 2/File 2 
"Date","Description","Amount" 
"5/12/2016","Desc1","-40" 
"5/15/2016","Desc2","-50" 

如果你仔細觀察,記錄是相同的,並且需要使用比較對象時要匹配。

那麼,有沒有一種方法可以將每個記錄中的第一個對象轉換爲日期,將第三個對象轉換爲同一個或多個數組中的某個數字。

也可以忽略鑄造時發現的任何錯誤(空日期或數字)。

謝謝!

PS。特別是尋找類似

import-object file1.csv | for-each object { cast $_.Date as date, ignore errors, cast $_Amount as number, ignore errors } 

回答

2

這聽起來像你想使用的-as運營商將數據轉換爲一個對象。

Import-Csv 'File1.csv' | ForEach { 
    [pscustomobject]@{ 
     Date = $_.Date -as [datetime] 
     Description = $_.Description 
     Amount = $_.Amount -as [int] 
    } 
} 

這樣做的好處是,如果失敗也不會拋出一個錯誤(但不會出現數據,只是爲Null)。

'06/07/2015' -as [datetime] 
'Wont Work' -as [datetime] 

10.00 -as [int] 
'Wont Work' -as [int] 
+0

好吧非常非常接近!還有一個請求 - 我可以將它轉換爲精確到兩位數的小數。問題是一些記錄中有50.00,當他們重複時,數量是50 ..比較對象將這些作爲不同時比較小數..或者它呢?檢查。 –

+0

非常感謝!這工作! –