计算数组的长度,如果只包含一个元素,则返回1

时间:2012-03-06 08:35:14

标签: arrays powershell

$cars = "bmw","audi","volvo","vw"
echo $cars.length

返回4,但

$cars = "bmw"

返回3,因为它会计算字符..

如果数组只包含一个项目,有没有办法可以返回1?

4 个答案:

答案 0 :(得分:29)

其他几个选项:

  1. 使用逗号运算符创建数组:

    $cars = ,"bmw"
    $cars.GetType().FullName
    # Outputs: System.Object[]
    
  2. 使用数组子表达式语法:

    $cars = @("bmw")
    $cars.GetType().FullName
    # Outputs: System.Object[]
    
  3. 如果您不想要一个对象数组,您可以向下转换为您想要的类型,例如一个字符串数组。

     [string[]] $cars = ,"bmw"
     [string[]] $cars = @("bmw")
    

答案 1 :(得分:15)

而不是写echo $cars.lengthecho @($cars).length

答案 2 :(得分:7)

将数组声明为:

$car = array("bmw")

修改

现在使用PowerShell语法:)

$car = [array]"bmw"

答案 3 :(得分:0)

也许我遗漏了一些东西(很多很多投票的成员在这里回答的问题似乎与我不同,但我认为这是不对的,这是不合理的),但是长度不是计算某物的正确术语。长度通常用于获取您得到的,而不是您想要的。

$cars.count应该给您您想要的东西。