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

Sun*_*une 21 arrays powershell

$cars = "bmw","audi","volvo","vw"
echo $cars.length
Run Code Online (Sandbox Code Playgroud)

返回4,但是

$cars = "bmw"
Run Code Online (Sandbox Code Playgroud)

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

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

And*_*ndi 29

其他几个选择:

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

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

    $cars = @("bmw")
    $cars.GetType().FullName
    # Outputs: System.Object[]
    
    Run Code Online (Sandbox Code Playgroud)

如果您不想要对象数组,则可以向下转换为您想要的类型,例如字符串数组.

 [string[]] $cars = ,"bmw"
 [string[]] $cars = @("bmw")
Run Code Online (Sandbox Code Playgroud)


jon*_*n Z 17

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


Vik*_*ram 7

将数组声明为:

$car = array("bmw")
Run Code Online (Sandbox Code Playgroud)

编辑

现在使用powershell语法:)

$car = [array]"bmw"
Run Code Online (Sandbox Code Playgroud)