Arrays Powershell测试一行中的阵列
我在文件上做了一个获取内容的操作。有时有很多行,但也可能只有一行(甚至0) 我在做类似的事情Arrays Powershell测试一行中的阵列,arrays,powershell,split,Arrays,Powershell,Split,我在文件上做了一个获取内容的操作。有时有很多行,但也可能只有一行(甚至0) 我在做类似的事情 $csv = (gc $FileIn) $lastID = $csv[0].Split(' ')[1] #First Line,2nd column 但是只有一行,gc返回一个字符串,$csv[0]返回字符串的第一个字符,而不是完整的行,下面的拆分失败 是否可以执行以下操作: $lastID = (is_array($csv)?$csv[0]:$csv).Split(' ')[1] 只有在$csv至
$csv = (gc $FileIn)
$lastID = $csv[0].Split(' ')[1] #First Line,2nd column
但是只有一行,gc返回一个字符串,$csv[0]返回字符串的第一个字符,而不是完整的行,下面的拆分失败
是否可以执行以下操作:
$lastID = (is_array($csv)?$csv[0]:$csv).Split(' ')[1]
只有在$csv至少包含一行时才能这样做
谢谢你的帮助,
Tim有一种方法可以用来测试变量的类型-is
是您需要的。这样,
$foo = @() # Array
$bar = "zof" # String
$foo -is [array] # Is foo an array?
True # Yes it is
$foo -is [string] # Is foo a string?
False # No it is not
$bar -is [array] # How about bar
False # Nope, not an array
$bar -is [string] # A string then?
True # You betcha!
所以像这样的东西可以用
if($csv -is [array]) {
# Stuff for array
} else {
# Stuff for string
}
而不是做:
$csv = (gc $FileIn)
你必须
$csv = @(gc $FileIn)
现在,无论文件是否有一行,输出都将始终是字符串数组。代码的其余部分只需将
$csv
视为字符串数组。至少在这种情况下,这种方法比必须检查输出是否是数组等要好。我经常对gci这样做,因为它的返回值是数组或单个FileInfo对象。