從CSV

2016-04-21 45 views
0

獲取陣列最大的價值我有一個CSV在那裏我有誰分配有數字鍵。當我添加一個關鍵CSV將被分配的下一個值。從CSV

我的代碼做這一切只是我的計算是錯誤的,由於這樣的事實,我不能得到的代碼返回已分配數的最大值。

我的CSV樣子:

Key,Count 
9383, T-1 
V-102,T-2 
V-4982,T-65 
85712, T-13 

我的代碼是:

$num = Import-Csv "$file1.csv" | Foreach {"$($_.Count)"} 

for ($i=0; $i -lt $num.Count; $i++) 
{ 
    [string]$assignednumbers = $num[$i] 

     #Remove T in front of numbers 
     [string]$prefix = "T-" 
     if ($assignednumbers.StartsWith($prefix)) 
     { 
     $assignednumbers = $assignednumbers.Replace($prefix, [string]::Empty) 
    } 

    $greatestvalue = ([int]$assignednumbers | Measure -Maximum).Maximum 
} 

我有行 $greatestvalue = ([int]$assignednumbers | Measure -Maximum).Maximum 問題,當我打電話$greatestvalue只有$greatestvalue = [int]$assignednumbers | Measure -Maximum我得到最大的列表我的csv中每個項目的屬性。它應該返回的65

值這是我要求要添加的號碼,並把它添加到CSV(沒有任何問題在這裏

#which key do you want to add 
$key = Read-Host "Please Input new Key" 

#getting t number 
$addingnum = $greatestvalue + 1 
$newnumber = "T-$addingnum" 


#Get new key information 
if ($key -gt 0) 
{ 
[string]$key =$key 
write-host -foregroundcolor green "The new Key is $key and has been assigned $newnumber" 
} 

#add vkey from input to csv 
$NewLine = "{0},{1}" -f $newvkey,$newnumber 
$NewLine | add-content -path " 

回答

1

您覆蓋您$greatestvalue每次。您需要定義其週期之外,改變只有當電流值大於你已經從以前的迭代有一個更大:

$num = Import-Csv "E:\1.csv" | Foreach {"$($_.Count)"} 
$greatestvalue = 0 
for ($i=0; $i -lt $num.Count; $i++) 
{ 
    [string]$assignednumbers = $num[$i] 

    #Remove T in front of numbers 
    [string]$prefix = "T-" 
    if ($assignednumbers.StartsWith($prefix)) 
    { 
     $assignednumbers = $assignednumbers.Replace($prefix, [string]::Empty) 
} 
if ($greatestvalue -lt ([int]$assignednumbers | Measure -Maximum).Maximum) 
    { 
    $greatestvalue = ([int]$assignednumbers | Measure -Maximum).Maximum 
    } 
} 
$greatestvalue 
+0

一看,你想通了就這樣。哈!謝謝你的工作,喜歡一種魅力。 – ShanayL

2

您正在試圖獲得最大的一個數字。 $ greatestvalue只是獲取最後一個值。要修復它,改變

$greatestvalue = ([int]$assignednumbers | Measure -Maximum).Maximum 

if ($greatestvalue -lt [int]$assignednumbers) { 
    $greatestvalue = $assignednumbers 
} 
+0

我在想這樣做大意的東西,但無法得到的共同聲明 – ShanayL