从powershell字符串中删除xA0

从powershell字符串中删除xA0,powershell,Powershell,我看到了一些关于在Python中从字符串中删除xA0字符的文章,我对此并不陌生,但是这些技巧似乎不适用于Powershell 我的问题是,我正在解析一个excel文件,有人使用了“ctrl+space”并创建了一个xA0不可见字符。我已经从excel工作表中删除了它,但我想知道如何过滤/删除这些字符 当将这些字符串导出为XML时(不喜欢这些字符),它会特别导致问题。如果它只是不间断的空格,您可以使用-replace操作符替换它: PS C:\> $s = [String]::Join([c

我看到了一些关于在Python中从字符串中删除xA0字符的文章,我对此并不陌生,但是这些技巧似乎不适用于Powershell

我的问题是,我正在解析一个excel文件,有人使用了“ctrl+space”并创建了一个xA0不可见字符。我已经从excel工作表中删除了它,但我想知道如何过滤/删除这些字符


当将这些字符串导出为XML时(不喜欢这些字符),它会特别导致问题。

如果它只是不间断的空格,您可以使用
-replace
操作符替换它:

PS C:\> $s = [String]::Join([char]0x00a0, ('Hello','World'))
PS C:\> $s
Hello World
PS C:\> $s -replace [char]0x00a0,'-'
Hello-World
您可能希望在创建XML后进行替换:

PS C:\> ([PSObject]@{"name"=$s} | convertto-xml -as string) -replace [char]0xA0,' '
<?xml version="1.0"?>
<Objects>
  <Object Type="System.Collections.Hashtable">
    <Property Name="Key" Type="System.String">name</Property>
    <Property Name="Value" Type="System.String">Hello&#160;World</Property>
  </Object>
</Objects>
PS C:\>([PSObject]@{“name”=$s}转换为xml-作为字符串)-替换[char]0xA0', ;'
名称
你好 ;世界
或更复杂的替换来处理任何非ascii字符:

PS C:\> $s = [string]::Join([char]160, ("Hello","Powershell","World", "♥♥♥"))
PS C:\> $myxml = $s | ConvertTo-Xml -as String
PS C:\> ([regex]"[\u0080-\uffff]").Replace($myxml, { param($m) "&#$([int][char]$m.Value);" })
<?xml version="1.0"?>
<Objects>
  <Object Type="System.String">Hello&#160;Powershell&#160;World&#160;&#9829;&#9829;&#9829;</Object>
</Objects>
PS C:\>
PS C:\>$s=[string]::Join([char]160,(“你好”、“Powershell”、“世界”),“♥♥♥"))
PS C:\>$myxml=$s|转换为Xml-作为字符串
PS C:\>([regex]“[\u0080-\uffff]”)。替换($myxml,{param($m)“&$([int][char]$m.Value);“})
您好 ;Powershell ;World ;♥;♥;♥;
PS C:\>

如果它只是非中断空间,您可以使用
-replace
操作符替换它:

PS C:\> $s = [String]::Join([char]0x00a0, ('Hello','World'))
PS C:\> $s
Hello World
PS C:\> $s -replace [char]0x00a0,'-'
Hello-World
您可能希望在创建XML后进行替换:

PS C:\> ([PSObject]@{"name"=$s} | convertto-xml -as string) -replace [char]0xA0,'&#160;'
<?xml version="1.0"?>
<Objects>
  <Object Type="System.Collections.Hashtable">
    <Property Name="Key" Type="System.String">name</Property>
    <Property Name="Value" Type="System.String">Hello&#160;World</Property>
  </Object>
</Objects>
PS C:\>([PSObject]@{“name”=$s}转换为xml-作为字符串)-替换[char]0xA0', ;'
名称
你好,世界
或更复杂的替换来处理任何非ascii字符:

PS C:\> $s = [string]::Join([char]160, ("Hello","Powershell","World", "♥♥♥"))
PS C:\> $myxml = $s | ConvertTo-Xml -as String
PS C:\> ([regex]"[\u0080-\uffff]").Replace($myxml, { param($m) "&#$([int][char]$m.Value);" })
<?xml version="1.0"?>
<Objects>
  <Object Type="System.String">Hello&#160;Powershell&#160;World&#160;&#9829;&#9829;&#9829;</Object>
</Objects>
PS C:\>
PS C:\>$s=[string]::Join([char]160,(“你好”、“Powershell”、“世界”),“♥♥♥"))
PS C:\>$myxml=$s|转换为Xml-作为字符串
PS C:\>([regex]“[\u0080-\uffff]”)。替换($myxml,{param($m)“&$([int][char]$m.Value);“})
您好 ;Powershell ;World ;♥;♥;♥;
PS C:\>
获取数值(在本例中为
0xA0
160
)并将其转换为
char

# Here is our HTML string
$nbspString = "Hello","World!"-join$([char]0xA0)

# Here we replace the non-breaking space character with a regular space (0x20 or 32)
$normalizedString = $nbspString.Replace([char]0xA0,[char]0x20)

# Same thing, just using the `-replace` operator instead
$normalizedString = $nbspString -replace [char]0xA0,[char]0x20
取数值(在本例中为
0xA0
160
)并将其转换为
char

# Here is our HTML string
$nbspString = "Hello","World!"-join$([char]0xA0)

# Here we replace the non-breaking space character with a regular space (0x20 or 32)
$normalizedString = $nbspString.Replace([char]0xA0,[char]0x20)

# Same thing, just using the `-replace` operator instead
$normalizedString = $nbspString -replace [char]0xA0,[char]0x20