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]

不喜欢在一个字符串上使用这么多拆分函数。我还能做什么?

在上面的示例中,我试图将各个分辨率大小、颜色深度和频率转换为它们的 on 变量;

水平 = 800 垂直 = 600 颜色 = 32 频率 = 60

4

2 回答 2

6

我发现我们可以将一个字符数组传递给 split 函数。
因此,在一行中:

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

32
bits
@
60
Hz.
于 2012-11-22T20:27:41.180 回答
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]
于 2012-11-22T20:28:09.230 回答