배열 객체를 문자열로 어떻게 변환 할 수 있습니까?
나는 시도했다 :
$a = "This", "Is", "a", "cat"
[system.String]::Join(" ", $a)
운없이 . PowerShell에서 다른 가능성은 무엇입니까?
답변
$a = 'This', 'Is', 'a', 'cat'
큰 따옴표 사용 (및 선택적으로 구분 기호 사용 $ofs
)
# This Is a cat
"$a"
# This-Is-a-cat
$ofs = '-' # after this all casts work this way until $ofs changes!
"$a"
연산자 결합 사용
# This-Is-a-cat
$a -join '-'
# ThisIsacat
-join $a
로 변환 사용 [string]
# This Is a cat
[string]$a
# This-Is-a-cat
$ofs = '-'
[string]$a
답변
배열을 Out-String
cmdlet으로 파이프하는 것도 잘 작동 한다는 것을 알았 습니다.
예를 들면 다음과 같습니다.
PS C:\> $a | out-string
This
Is
a
cat
어떤 방법이 가장 적합한 지 최종 목표에 달려 있습니다.
답변
1> $a = "This", "Is", "a", "cat"
2> [system.String]::Join(" ", $a)
두 번째 줄은 작업을 수행하고 호스트로 출력하지만 $ a는 수정하지 않습니다.
3> $a = [system.String]::Join(" ", $a)
4> $a
This Is a cat
5> $a.Count
1
답변
파이프에서
# This Is a cat
'This', 'Is', 'a', 'cat' | & {"$input"}
# This-Is-a-cat
'This', 'Is', 'a', 'cat' | & {$ofs='-';"$input"}
쓰기 호스트
# This Is a cat
Write-Host 'This', 'Is', 'a', 'cat'
# This-Is-a-cat
Write-Host -Separator '-' 'This', 'Is', 'a', 'cat'
답변
다음과 같이 유형을 지정할 수 있습니다.
[string[]] $a = "This", "Is", "a", "cat"
유형 확인 :
$a.GetType()
확인합니다 :
IsPublic IsSerial 이름 BaseType -------- -------- ---- -------- True True String [] System.Array
$ a 출력 :
PS C : \> $ a 이 입니다 ㅏ 고양이
답변
$a = "This", "Is", "a", "cat"
foreach ( $word in $a ) { $sent = "$sent $word" }
$sent = $sent.Substring(1)
Write-Host $sent