我已经阅读了在PowerShell中将char数组转换为字符串的各种方法,但它们似乎都不适用于我的字符串。 我的字符串的来源是:
$ComputerName = "6WMPSN1"
$WarrantyURL = "http://www.dell.com/support/troubleshooting/au/en/aulca1/TroubleShooting/ProductSelected/ServiceTag/$ComputerName"
$WarrantyPage = Invoke-WebRequest -Uri $WarrantyURL
$WPageText = $WarrantyPage.AllElements | Where-Object {$_.id -eq "TopContainer"} | Select-Object outerText
生成的WPageText是Char数组,所以我不能使用Select-String -Pattern“days”-Context
我试过了:
$WPageText -join
[string]::Join("", ($WPageText))
按照 http://softwaresalariman.blogspot.com.au/2007/12/powershell-string-and-char-sort-and.html
到目前为止,我唯一成功的事情是:
$TempFile = New-Item -ItemType File -Path $env:Temp -Name $(Get-Random)
$WPageText | Out-File -Path $TempFile
$String = Get-Content -Path $TempFile
除了编写和阅读文件外,还有什么方法可以做到这一点吗?
答案 0 :(得分:8)
您可以使用-join
运算符(使用额外部分来证明数据类型):
$x = "Hello World".ToCharArray();
$x.GetType().FullName # returns System.Char[]
$x.Length # 11 as that's the length of the array
$s = -join $x # Join all elements of the array
$s # Return "Hello World"
$s.GetType().FullName # returns System.String
或者,连接也可以写为:
$x -join ""
两者都是合法的;没有LHS的-join
只是在其RHS上合并数组。第二种格式使用RHS作为分隔符加入LHS。有关详情,请参阅help about_Join。
答案 1 :(得分:4)
这样做的廉价方法是修改$ofs
变量并将数组包含在字符串中。 $ofs
是一个内部PS分隔符,用于使用.NET中的Object.ToString()
打印数组。
$a = "really cool string"
$c = $a.ToCharArray()
$ofs = '' # clear the separator; it is ' ' by default
"$c"
您也可以(应该)使用System.String
这样的构造函数:
$a = "another mind blowing string"
$result = New-Object System.String ($a,0,$a.Length)
答案 2 :(得分:2)
将char数组转换为字符串的最快方法:
[String]::new($WPageText)
答案 3 :(得分:0)
无论你在寻找什么,我认为你错过了关于$WPageText
的一些事情。如果您看一下PSCustomObject
,您感兴趣的是outerText
这是一个字符串。
PS C:\PowerShell> $WPageText | Get-Member
TypeName: Selected.System.Management.Automation.PSCustomObject
Name MemberType Definition ---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
outerText NoteProperty System.String outerText= ...
所以
PS C:\PowerShell> $WPageText.outerText
Precision M6500
Service Tag: 6WMPSN1
Select A Different Product >
Warranty Information
Warranty information for this product is not available.