2012-11-22 119 views
2

我需要一個更好的方法來做到這一點嗎?多個拆分

$strOutput = "800x600, 32 bits @ 60 Hz." 

     # Initial split 
$aSplitString = $strOutput.Split(",") 


# Get Horizontal and Vertical Length 
$aSplitString2 = $aSplitString[0].Split("x") 
$strHorizontal = $aSplitString2[0] 
$strVertical = $aSplitString2[1] 
$aSplitString2 = $null 

#Get Color Depth and Frequency 
$aSplitString2 = $aSplitString[1].Split(" ") 
$strColour = $aSplitString2[1] 
$strFrequency = $aSplitString2[4] 

不喜歡在一個字符串上使用如此多的分割函數。我還能做什麼?

我試圖讓在上面的例子中變量的個體的分辨率大小,顏色深度和頻率到他們;

水平= 800 垂直= 600 顏色= 32 頻率= 60

回答

6

我發現,我們可以通過字符數組到分割功能。
因此,在一行:

PS C:\Windows\system32> "800x600, 32 bits @ 60 Hz.".split(@("x",","," ")) 
800 
600 

32 
bits 
@ 
60 
Hz. 
+0

你,先生,是個天才。 – Anicho

2

一個方法是:

$strOutput = "800x600, 32 bits @ 60 Hz." 
$splitted = $strOutput -replace '\D',' ' -split '\s+' 
$strHorizontal = $splitted[0] 
$strVertical = $Splitted[1] 
$strColour = $splitted[2] 
$strFrequency = $splitted[3]