PowerShell中ISO 8859-1编码字符串未识别空格无法替换怎么办?
解决ISO 8859-1编码下字符串空格无法完全移除的问题
问题原因
残留的特殊空格为ISO 8859-1编码中的非断行空格(NBSP),字符编码值为十六进制0xA0(十进制160),你此前调用Replace方法仅替换了编码为0x20的普通半角空格,因此无法匹配该类特殊空格。
解决方法
- 方法1:叠加替换普通空格和非断空格
直接新增针对NBSP的替换规则即可,代码示例:$interface[1].Replace(' ', '').Replace([char]0xA0, '') - 方法2:正则匹配所有空白字符(适配所有空格类型)
如果需要同时匹配普通空格、非断空格、制表符等所有空白类字符,直接用正则的空白元字符匹配,代码示例:
# PowerShell 环境 $interface[1] -replace '\s+', ''
// C# 环境 Regex.Replace($interface[1], @"\s+", "")
调试验证方法
如果需要确认残留字符的具体编码,可通过如下代码输出字符编码值验证:
$residualStr = $interface[1].Replace(' ', '') # 取残留空格的字符输出编码 [int]$residualStr[$residualStr.IndexOf(':') - 1] # 输出为160即可确认是非断行空格
内容的提问来源于stack exchange,提问作者LesmoTV
相关产品推荐
相关产品推荐

