2010-06-26 120 views
3

我正在编写一个脚本来取一串字母并将它们转换为音标值。我遇到的问题是我无法在散列表中引用值(请参阅下面的错误)。我不确定为什么代码对我来说很好。Powershell哈希表问题

Index operation failed; the array index evaluated to null. 
At C:\Scripts\test.ps1:8 char:23 
    + write-host $alphabet[ <<<< $char] 
    + CategoryInfo   : InvalidOperation: (:) [], RuntimeException 
    + FullyQualifiedErrorId : NullArrayIndex 

} 

参数($字符串= $(扔 '输入字符串'))

$alphabet = @{ 
"A" = "Alfa"; 
"B" = "Bravo "; 
"C" = "Charlie "; 
"D" = "Delta "; 
"E" = "Echo "; 
"F" = "Foxtrot "; 
"G" = "Golf "; 
"H" = "Hotel "; 
"I" = "India "; 
"J" = "Juliett"; 
"K" = "Kilo "; 
"L" = "Lima "; 
"M" = "Mike "; 
"N" = "November "; 
"O" = "Oscar "; 
"P" = "Papa "; 
"Q" = "Quebec "; 
"R" = "Romeo "; 
"S" = "Sierra "; 
"T" = "Tango "; 
"U" = "Uniform "; 
"V" = "Victor "; 
"W" = "Whiskey "; 
"X" = "X-ray"; 
"Y" = "Yankee "; 
"Z" = "Zulu "; 
} 

clear-host 
$charArray = $string.ToCharArray() 
foreach ($char in $charArray) 
{ 
    write-host $alphabet[$char] 
} 
+1

Alfa应该是Alpha ;-) – x0n 2011-04-04 21:17:24

回答

4

每个字符是一个丰富的对象,更改:

写主机$字母[$字符]

写主机$字母[ “$字符”]

write-host $ alphabet [$ char.ToString()]

-1

依我看,你需要你的阵列中的每个字母后,就失去了空间。而且你在Alfa,Juliett(sp)和X射线之后也缺少一个空间。

$alphabet = @{ 
"A" = "Alfa "; 
"B" = "Bravo "; 
"C" = "Charlie "; 
"D" = "Delta "; 
"E" = "Echo "; 
"F" = "Foxtrot "; 
"G" = "Golf "; 
"H" = "Hotel "; 
"I" = "India "; 
"J" = "Juliet "; 
"K" = "Kilo "; 
"L" = "Lima "; 
"M" = "Mike "; 
"N" = "November "; 
"O" = "Oscar "; 
"P" = "Papa "; 
"Q" = "Quebec "; 
"R" = "Romeo "; 
"S" = "Sierra "; 
"T" = "Tango "; 
"U" = "Uniform "; 
"V" = "Victor "; 
"W" = "Whiskey "; 
"X" = "X-ray "; 
"Y" = "Yankee "; 
"Z" = "Zulu "; 
} 
+0

谢谢你指出。但是,这是我格式化该帖子的错误。原始代码没有任何空格。 – SuperFurryToad 2010-06-26 18:04:48

0

你的问题是,在$alphabet[$char]$char为空。 $chararray从哪里来?

+0

对不起,当我粘贴代码时,我创建char数组的行已经丢失。我已经将它添加回现在 – SuperFurryToad 2010-06-26 18:14:14

+2

这不会起作用; '$ alphabet'的键是字符串,而'$ char'是一个字符。你想''字母表[$ char.ToString()]',但它仍然不能解释null来自哪里。 – Gabe 2010-06-26 18:27:29

+0

$ alphabet [$ char.ToString()]完成了这个诀窍。现在它工作,谢谢。 – SuperFurryToad 2010-06-26 18:48:46