PowerShell 技能连载 - 转义独立的字符
在前一个技能中,我们解释了如何转义整个字符串序列。如果您只需要转义单个字符,请使用 HexEscape()
如:
1 | PS> [Uri]::HexEscape('a') |
此方法实际上是检索 ASCII 代码并将其转换为十六进制。
实际上,还可以进行相反的操作,您可以将转义的字符转换回正常字符。例如,”a” 的 ASCII 代码为 65,它的十六进制表达是 41。因此,”A” 的转义表示为 “%41”,这行代码将得到 “A”:
1 | PS C:\> [Uri]::HexUnescape('%41',[ref]0) |
(第二个参数表示要转换转义的字符在字符串中的位置)。
有了这个,您现在可以生成一个范围内的字母:首先,生成所需字母的 ASCII 代码,并以十六进制形式手动转换它们。-f
运算符可以执行此转换:
1 | PS> $decimal = 65 |
以下是来自 A 到 Z 的转义字母:
1 | 65..90 | ForEach-Object { '%{0:X}' -f $_ } |
反转义它们的方法:
1 | 65..90 | ForEach-Object { [Uri]::HexUnescape( ('%{0:X}' -f $_), [ref]0) } |
不过,不要爱上这个过度的技巧。类型转换可以让您更轻松实现:
1 | [char[]](65..90) |
PowerShell 技能连载 - 转义独立的字符
http://blog.vichamp.com/2022/01/14/escaping-individual-characters/