Powershell 如何避免使用字符串格式导致空白添加?
我有一个返回PSCustomObject的函数,如下所示:Powershell 如何避免使用字符串格式导致空白添加?,powershell,hashtable,whitespace,string-formatting,pscustomobject,Powershell,Hashtable,Whitespace,String Formatting,Pscustomobject,我有一个返回PSCustomObject的函数,如下所示: Function Get-Data { # ... [PSCustomObject]@{ Url = $Url Id = $Id } } $data = Get-Data 稍后,我这样调用此函数: Function Get-Data { # ... [PSCustomObject]@{ Url = $Url Id = $Id } } $data = Get-Data 然后我
Function Get-Data {
# ...
[PSCustomObject]@{
Url = $Url
Id = $Id
}
}
$data = Get-Data
稍后,我这样调用此函数:
Function Get-Data {
# ...
[PSCustomObject]@{
Url = $Url
Id = $Id
}
}
$data = Get-Data
然后我想输出包含该对象属性值的格式化字符串。与我想要的结果最接近的是输出,如下所示:
Write-Host "$($data.Url)|$($data.Id)|OK"
问题是第一个|
字符后面有空格
它来自哪里?如何以正确的方式消除它?您可以对每个字符串调用
.Trim()
(如Mathias所述)。也可以使用正则表达式替换任何空白字符:
显然,这一切都隐藏在
Get Data
方法的细节中,我轻率地忽略了它
在创建该自定义对象之前,该方法进行了大量REST API调用,其中一个调用的输出没有分配给变量,也没有“Out Null”-ed。因此,返回的real自定义对象是由该web响应加上我显式创建的自定义对象作为属性组成的对象
看起来PowerShell试图为我推断类型,但它无法管理那些主要的空白
希望这可以节省一些时间。我只是想在这个话题上添加另一个技巧,因为我也遇到了这个问题。尽管我在函数的返回值中没有看到前导空格。返回值后,会有一个额外的前导空格。我发现前一行输出对象内容的冗长代码把我搞砸了 写出详细的$obj | fl*|输出字符串 我在输出周围添加了括号,解决了我的问题 写详细的($obj | fl*| Out字符串)
我猜Out String部分会干扰函数的管道,并导致函数返回的字符串值的开头添加额外的空白可能来自
get Data
函数中的原始$Id
值$($data.Id.Trim())
若要删除,还可以更新函数,在将值添加到对象之前,从值的开头或结尾删除任何空格Id=$Id.Trim()
我终于解决了问题。我将在我的回答中更详细地描述它。我接受你的回答,因为它正确地解决了问题中描述的问题。非常感谢。非常感谢。有完全相同的问题,因为我在一个函数中,打印了一个尚未定义的变量,然后,它与return语句一起,显然引入了一个分隔的空格。。。!