【发布时间】:2021-07-25 08:00:46
【问题描述】:
我试图将一个变量与一个字符串连接起来,但中间总是有一个空格
[xml] $buildConfig = Get-Content $paths_target_file_path
$ver = $buildConfig.Project.PropertyGroup.LibVersion
$ver = $ver -replace "\s+",""
$version = "V"+$ver
Write-Host "Downloading LIB version: $version"
上面的输出是Downloading Lib version: V 1.2.11 即 V 和 1.2.11 之间的空格,尽管替换了任何空白字符
马库斯
【问题讨论】:
-
您确定表观空间实际上是标准空间吗?还有其他看起来像空格的字符。一种测试方法是将
$Ver提供给Format-Hex并查看实际的字符代码是什么。 -
@Lee_Dailey:
\s还涵盖了 ASCII 空格字符的 Unicode 变体。 (例如,(U+00A0,不间断空格)- 你知道有任何字符 呈现 像空格但与\s不匹配吗?Format-Hex不是Windows PowerShell 中的选项,因为它表示任何非 ASCII 字符。如3f== 文字?。在 PowerShell Core 中,它显示 构成非 UTF-8 编码的字节 ASCII 字符,可能会造成混淆。没有直接的内置解决方案;请参阅this answer。 -
我打赌
$ver不是字符串类型。 -
不幸的是,在更改了我的 xml 文件后,我无法再重现它了 :-(。如果它再次出现,我会回来。谢谢
标签: string powershell concatenation