PowerShell 技能连载 - 转换特殊字符(第二部分)
适用于所有 PowerShell 版本
在前一个技巧中我们演示了如何替换一段文本中的特殊字符。以下是另一种方法,虽然慢一点,但是更容易维护。它也演示了一个大小写敏感的哈希表:
function ConvertTo-PrettyText($Text)
{
$hash = New-Object -TypeName HashTable
$hash.'ä' = 'ae'
$hash.'ö' = 'oe'
$hash.'ü' = 'ue'
$hash.'ß' = 'ss'
$hash.'Ä' = 'Ae'
$hash.'Ö' = 'Oe'
$Hash.'Ü' = 'Ue'
Foreach ($key in $hash.Keys)
{
$Text = $text.Replace($key, $hash.$key)
}
$Text
}
请注意该函数并不是以 @{}
的方式定义一个哈希表,而是构造了一个 HashTable
对象。由于 PowerShell 所带的哈希表是大小写不敏感的,而这个函数创建的哈希表是大小写敏感的。这一点非常重要,因为该函数期望对大小写字母作区分。
PS> ConvertTo-PrettyText -Text 'Mr. Össterßlim'
Mr. Oesstersslim
PS>
如果您想要指定 ASCII 码,以下是一个用 ASCII 码作为键的变体:
function ConvertTo-PrettyText($Text)
{
$hash = @{
228 = 'ae'
246 = 'oe'
252 = 'ue'
223 = 'ss'
196 = 'Ae'
214 = 'Oe'
220 = 'Ue'
}
foreach($key in $hash.Keys)
{
$Text = $text.Replace([String][Char]$key, $hash.$key)
}
$Text
}
PowerShell 技能连载 - 转换特殊字符(第二部分)
http://blog.vichamp.com/2014/07/22/converting-special-characters-part-2/