如何一次将一个字符发送到Powershell中的功能?

时间:2018-09-05 11:33:15

标签: powershell

我有一个函数带有一个char类型的参数,当然一次只能表示一个字符。

我创建了一个for循环,以便一次向该函数发送一个字符。但是,这当然是行不通的,因为$mystring是一个字符串,不能像char一样进行处理。解决方案是什么?

$mystring = "ABCDEFG";

function Characters {
    $lettertoascii = [int][char]$args[0];
}

for($i=1; $i -le 10; $i++){
    Characters $mystring
}

3 个答案:

答案 0 :(得分:1)

您可以将字符串转换为char数组,并通过foreach循环对其进行处理,以通过char调用函数char:

$mystring = "ABCDEFG";

function characters{
     $lettertoascii = [int][char]$args[0];
}

$mystring.ToCharArray() | foreach {
    Characters $_
}

答案 1 :(得分:1)

我建议使用高级功能:

function Get-Character
{
    [CmdletBinding()]
    [OutputType([System.Int32[]])]
    param
    (
        [Parameter(Position = 0, ValueFromPipeline)]
        [System.Char[]]
        $Letter
    )

    process
    {
        foreach ($item in $Letter)
        {
            [int]$item
        }
    }
}

然后您可以通过管道将char数组传递给它:

'abcdefg' | Get-Character

否则:

Get-Character 'abcdefg'

Here's documentation on the ToCharArray method,another link about advanced powershell functions.

编辑:
事实证明,powershell很聪明,可以将字符串自动类型转换为char数组,因此您只需传递字符串即可。

答案 2 :(得分:1)

或者只是像这样循环遍历字符串中的字符:

$myString = 'ABCDEFG'
for ($i = 0; $i -lt $myString.Length; $i++) {
    # call your function one System.Char at a time
    Characters $myString[$i]
}