如何从此PowerShell阵列中删除空格?

时间:2015-12-30 11:05:18

标签: powershell

我正试图从Powershell获取所有ASCII数字和字母,以便以后用作密钥。

到目前为止我的代码看起来像这样:

[char[]] $keyArray = @()
for($i = 65;$i -le 122;$i++) 
{
    if($i -lt 91 -or $i -gt 96)  
    {
        $keyArray += [char]$i
    }  
}
for($i = 0; $i -le 9; $i++)
{
    $keyArray += ("$i")
}

Write-Host [string]$keyArray

然而,当我把它写出来(最后一行)时,我得到以下每个字符之间的空格:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

如何删除这些空格?

3 个答案:

答案 0 :(得分:3)

您可以使用-join运算符来连接数组元素。该运算符的二进制形式允许您指定自定义分隔符:

-join $keyArray
$keyArray -join $separator

如果你真的有数组字符,那么你只需要调用String构造函数:

New-Object String (,$keyArray)
[String]::new($keyArray) #PS v5

并且不使用数组添加。它缓慢而且没必要。在大多数情况下,数组运算符@()足够强大:

$keyArray = [char[]] @(
    for($i = 65;$i -le 122;$i++)
    {
        if($i -lt 91 -or $i -gt 96)
        {
            $i
        }
    }
    for($i = 0; $i -le 9; $i++)
    {
        "$i"
    }
)

使用PowerShell范围运算符可以简化代码:

$keyArray = [char[]] @(
    'A'[0]..'Z'[0]
    'a'[0]..'z'[0]
    '0'[0]..'9'[0]
)

答案 1 :(得分:2)

使用内置输出字段分隔符如下(单行,使用分号分隔,并且必须将$keyArray强制转换为[string]才能使其生效):

$OFS = '';[string]$keyArray

Reference

答案 2 :(得分:2)

如果你想要每行一个字符:

Write-Host ($keyArray -join '')

如果你想在一行上显示所有字符:

DXValidationProvider