【发布时间】:2015-03-13 18:57:11
【问题描述】:
假设我有一个哈希表:
$tokens = @{
Id=9999;
Title="Lorem ipsum dolor sit amet";
Author=@{Name="John Doe"; Email='john.doe@foo.xyz'};
Analyst=@{Name="Jane Doe"; Email='jane.doe@foo.xyz'}
}
还有一个我想填充的模板,用相应的哈希表值替换标记(例如__Title__):
/*
Author: __Author.Name__ <__Author.Email__>
Analyst: __Analyst.Name__ <__Analyst.Email__>
Request: __Title__ [__Id__]
*/
...
应该变成:
/*
Author: John Doe <john.doe@foo.xyz>
Analyst: Jane Doe <jane.doe@foo.xyz>
Request: Lorem ipsum dolor sit amet [9999]
*/
有没有办法在“父”哈希表中引用嵌入式哈希表的元素?例如,$tokens['Author.Email'] 不起作用。
代码:
...
return [regex]::Replace( $template, '__(?<tokenName>\w+)__', {
# __TOKEN__
param($match)
$tokenName = $match.Groups['tokenName'].Value
if ($tokens[$tokenName]) {
# matching token returns value from hashtable;
works for simple keys `$tokens['Title']`, not complex keys `$tokens['Author.Name']`
return $tokens[$tokenName]
}
else {
# non-matching token returns token
return $match
}
})
【问题讨论】:
-
$tokens.author.email将是电子邮件地址。至少在 PowerShell 3.0 中 -
@Matt 说了什么。还有
$tokens['Author']['Email'] -
@craig 你是什么意思?
-
我将如何从
__Author.Email__变为$tokens['Author']['Email']?
标签: powershell hashmap hashtable powershell-2.0