6

我对文件执行获取内容。有时有很多行,但可能只有一行(甚至 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 至少包含一行时才这样做?

谢谢你的帮助,蒂姆

4

2 回答 2

12

有一些类型运算符可以用来测试变量的类型。-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
}
于 2013-08-16T07:57:49.990 回答
9

而不是这样做:

$csv = (gc $FileIn)

你不得不

$csv = @(gc $FileIn)

现在输出将始终是一个字符串数组,而不管文件是否有一行。其余代码只需将其$csv视为字符串数组。这种方式比必须检查输出是否是数组等要好,至少在这种情况下是这样。

于 2013-08-16T08:05:00.657 回答