Board logo

标题: [原创教程] PowerShell 技能连载 - 转换特殊字符(第二部分) [打印本页]

作者: victorwoo    时间: 2014-7-28 08:17     标题: PowerShell 技能连载 - 转换特殊字符(第二部分)

原始链接:PowerShell 技能连载 - 转换特殊字符(第二部分)
发表日期:2014-07-22


适用于所有 PowerShell 版本

在前一个技巧中我们演示了如何替换一段文本中的特殊字符。以下是另一种方法,虽然慢一点,但是更容易维护。它也演示了一个大小写敏感的哈希表:
  1. function ConvertTo-PrettyText($Text)
  2. {
  3.   $hash = New-Object -TypeName HashTable
  4.   $hash.'ä' = 'ae'
  5.   $hash.'ö' = 'oe'
  6.   $hash.'ü' = 'ue'
  7.   $hash.'ß' = 'ss'
  8.   $hash.'Ä' = 'Ae'
  9.   $hash.'Ö' = 'Oe'
  10.   $Hash.'ü' = 'Ue'
  11.   Foreach ($key in $hash.Keys)
  12.   {
  13.     $Text = $text.Replace($key, $hash.$key)
  14.   }
  15.   $Text
  16. }
复制代码
请注意该函数并不是以 `@{}` 的方式定义一个哈希表,而是构造了一个 `HashTable` 对象。由于 PowerShell 所带的哈希表是大小写不敏感的,而这个函数创建的哈希表是大小写敏感的。这一点非常重要,因为该函数期望对大小写字母作区分。
  1. PS> ConvertTo-PrettyText -Text 'Mr. Össterßlim'
  2. Mr. Oesstersslim
  3. PS>
复制代码
如果您想要指定 ASCII 码,以下是一个用 ASCII 码作为键的变体:
  1. function ConvertTo-PrettyText($Text)
  2. {
  3.   $hash = @{
  4.     228 = 'ae'
  5.     246 = 'oe'
  6.     252 = 'ue'
  7.     223 = 'ss'
  8.     196 = 'Ae'
  9.     214 = 'Oe'
  10.     220 = 'Ue'
  11.   }
  12.   foreach($key in $hash.Keys)
  13.   {
  14.     $Text = $text.Replace([String][Char]$key, $hash.$key)
  15.   }
  16.   $Text
  17. }
复制代码
本文国际来源:Converting Special Characters, Part 2




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2