2014-09-21 85 views
0

文件我想讀下面變量,數組基於文本

variable, arrElement1, arrElement2, arrElemen3, arrelement[n]... 
variable, arrElement1, arrElement2, arrElemen3, arrelement[n]... 
. 
. 
. 
variable, arrElement1, arrElement2, arrElemen3, arrelement[n]... 

什麼,我想要實現的樣子例如讀取該文件,指定「變量」作爲一個元素中的變量的行 和arrElement的元素作爲數組

類似的東西:

:僞代碼:

foreach (line in text file) 
    $variable=variable 
    $array = "arrElement1", "arrElement2", "arrElement3", .... 
    foreach($element in $array) { 
     'do some stuff' 
    } 

預先感謝您

回答

1

像這樣的東西應該工作:

Get-Content 'C:\your.txt' | % { 
    $arr = $_ -split '\s*,\s*' 
    New-Variable -Name $arr[0] -Value $arr[1..$arr.Length] 
} 

編輯:根據你的僞代碼你的意思是保持在一個變量和字段的其餘部分的第一場數組中的第二個變量。這更簡單的實現:

Get-Content 'C:\your.txt' | % { 
    $var, $arr = $_ -split '\s*,\s*' 
    $arr | % { 
    # do stuff 
    } 
} 
+0

哦,那看起來很安靜簡單。在開始時我正在考慮創建所有元素的數組,併爲循環做(從數組中的第二個元素開始)。 @Walter能否請您評論一行代碼。我不確定那裏發生了什麼。 $ var,$ arr = $ _ -split'\ s *,\ s *' 對我來說看起來像正則表達式。不能只是','? 謝謝 – hermitagup 2014-09-21 13:48:47

+0

@hermitagup這個名字的Ansgar,而不是Walter。是的,您也可以使用'-split',''而不是'-split'\ s *,\ s *''。但是,如果這樣做,數組值將保留逗號前/後的所有空格。例如,像這樣分割一個字符串'「a,b」'會產生一個帶有2個字符串''a「'(帶有尾部空格)和'」b「'(帶有前導空格)的數組。分割正則表達式中的'\ s *'可以防止這種情況發生。 – 2014-09-21 15:16:09

+0

@Ansgar,對於這個錯誤真的很抱歉。謝謝你解釋我的那部分。我完全同意你的聰明解決方案。有一個很好的代碼。 – hermitagup 2014-09-21 16:17:39