我有一个函数带有一个char
类型的参数,当然一次只能表示一个字符。
我创建了一个for循环,以便一次向该函数发送一个字符。但是,这当然是行不通的,因为$mystring
是一个字符串,不能像char一样进行处理。解决方案是什么?
$mystring = "ABCDEFG";
function Characters {
$lettertoascii = [int][char]$args[0];
}
for($i=1; $i -le 10; $i++){
Characters $mystring
}
答案 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]
}