나는 어떻게 문자열을 보충에 PowerShell 기능입니까?
-
08-06-2019 - |
문제
나는 어떻게 변환하는 기능 입력 매개변수 유형?
내가 원하는 문자열을 반환이 있는 부분의 URL 을 전달되 그것으로 제거됩니다.
이 작품은,그러나 그것을 사용 하드 코딩된 문자열:
function CleanUrl($input)
{
$x = "http://google.com".Replace("http://", "")
return $x
}
$SiteName = CleanUrl($HostHeader)
echo $SiteName
이것은 실패합니다.
function CleanUrl($input)
{
$x = $input.Replace("http://", "")
return $x
}
Method invocation failed because [System.Array+SZArrayEnumerator] doesn't contain a method named 'Replace'.
At M:\PowerShell\test.ps1:13 char:21
+ $x = $input.Replace( <<<< "http://", "")
해결책
는 개념을 여기에 올바른 것입니다.
문제가 변수 이름과 함께 당신이 선택됩니다.$입력을 지는 데 사용되는 변수에 의해 PowerShell 을 대표하는 배열 파이프라인의 입력이 있습니다.을 변경하는 경우는 변수 이름,너는 어떤 문제입니다.
PowerShell 가 대체 연산자, 다,그래서 당신을 만들 수 있는 기능으로
function CleanUrl($url)
{
return $url -replace 'http://'
}
다른 팁
스티브의 응답을 작동합니다.문제로를 재현해 ESV 의 스크립트가 사용하고 있는 $input
, 예약된 변수(자동으로 수집하는 여러 개의 파이프의 입력으로 하나의 변수).
당신이해야한다,그러나 사용이다.대체()이 필요하지 않는 경우는 추가 기능(s)-교체(처리하는 정규 표현식,etc.).
function CleanUrl([string]$url)
{
$url.Replace("http://","")
}
는 일할 것이다,하지만 너무 것:
function CleanUrl([string]$url)
{
$url -replace "http://",""
}
또한,호출할 때 PowerShell 기능을 사용하지 않는 괄호:
$HostHeader = "http://google.com"
$SiteName = CleanUrl $HostHeader
Write-Host $SiteName
는 희망 도움이 됩니다.여 방법을 보여줍$입력:
function CleanUrls
{
$input -replace "http://",""
}
# Notice these are arrays ...
$HostHeaders = @("http://google.com","http://stackoverflow.com")
$SiteNames = $HostHeader | CleanUrls
Write-Output $SiteNames
function CleanUrl([string] $url)
{
return $url.Replace("http://", "")
}
이것은 나를 위해 일했:
function CleanUrl($input)
{
return $input.Replace("http://", "")
}
제휴하지 않습니다 StackOverflow