Powershell转换特殊字符(2)


支持所有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
}

注意其中函数没有通过”@{}”来定义成一个哈希表,但是实例化了一个哈希表对象。现在这个哈希表在PS中调用是不用再区分大小写,而只要在函数中创建中注意大小写。 这个脚本必需注意函数中的大小写。

PS> ConvertTo-PrettyText -Text 'Mr. Össterßlim'
Mr. Oesstersslim

PS>

要追加替换对象, 只需非常简单添加相应前缀的字符串到哈希表和它的替换内容的值。

你还可以指定成ASCLL码,下面代码将不同,它将哈希表的键换成了ASCLL码。

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
}

原文地址:Converting Special Characters, Part 2

×用微信扫描并分享
本文链接: https://www.pstips.net/converting-special-characters-part-2.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

发表评论

邮箱地址不会被公开。 必填项已用*标注