2011-10-11 12 views
102

¿Cómo puedo convertir un objeto de matriz en una cadena?¿Cómo convierto un objeto de matriz en una cadena en PowerShell?

me trataron:

$a = "This", "Is", "a", "cat" 
[system.String]::Join(" ", $a) 

sin suerte. ¿Cuáles son las diferentes posibilidades en PowerShell?

+3

Véase mi respuesta, pero su código funciona bien, también. ¿Por qué dices "sin suerte"? –

+3

Lo siento, sí, parece que funciona, creo que arruiné algo cuando probé esto. – jrara

Respuesta

190
$a = 'This', 'Is', 'a', 'cat' 

Uso de comillas dobles (y utilizar opcionalmente el separador $ofs)

# This Is a cat 
"$a" 

# This-Is-a-cat 
$ofs = '-' # after this all casts work this way until $ofs changes! 
"$a" 

Usando operador JOIN

# This-Is-a-cat 
$a -join '-' 

# ThisIsacat 
-join $a 

Uso de conversión a [string]

# This Is a cat 
[string]$a 

# This-Is-a-cat 
$ofs = '-' 
[string]$a 
+5

Para los no iniciados (como yo) '$ ofs' está documentado [aquí] (http: // stackoverflow.com/documentation/powershell/5353/automatic-variables/19045/ofs) – Liam

+3

La documentación de Stackoverflow ha sido cerrada por lo que el enlace de Liam está muerto. Aquí hay otra explicación de $ OFS, el Separador de campo de salida: https://blogs.msdn.microsoft.com/powershell/2006/07/15/psmdtagfaq-what-is-ofs/ –

2

puede especificar el tipo de esta manera:

[string[]] $a = "This", "Is", "a", "cat" 

Comprobación del tipo:

$a.GetType() 

Confirma:

 
    IsPublic IsSerial Name          BaseType 
    -------- -------- ----          -------- 
    True  True  String[]         System.Array 

Emisión de $ A:

 
PS C:\> $a 
This 
Is 
a 
cat 
26

Descubrí que la conexión de la matriz al cmdlet out-string también funciona bien.

Por ejemplo:

PS C:\> $a | out-string 

This 
Is 
a 
cat 

que depende de su objetivo final en cuanto a qué método es el mejor para usar.

+3

FYI: simplemente haciendo '$ a' haría tiene el mismo efecto que '$ a | out-string' – JohnLBevan

+7

@JohnLBevan No siempre. '($ a | out-string) .getType()' = Cadena. '$ a.getType()' = Object []. Si está utilizando $ a como argumento para un método que espera una cadena (como 'invoke-expression' por ejemplo), entonces' $ a | out-string' tiene una clara ventaja. – rojo

5

de una tubería

# This Is a cat 
'This', 'Is', 'a', 'cat' | & {"$input"} 

# This-Is-a-cat 
'This', 'Is', 'a', 'cat' | & {$ofs='-';"$input"} 

Write-Host

# This Is a cat 
Write-Host 'This', 'Is', 'a', 'cat' 

# This-Is-a-cat 
Write-Host -Separator '-' 'This', 'Is', 'a', 'cat' 

Example

11
1> $a = "This", "Is", "a", "cat" 

2> [system.String]::Join(" ", $a) 

Línea dos lleva a cabo la operación y salidas para acoger, pero no modifica $ una :

3> $a = [system.String]::Join(" ", $a) 

4> $a 

Este es un gato

5> $a.Count 

1 
0
$a = "This", "Is", "a", "cat" 

foreach ($word in $a) { $sent = "$sent $word" } 
$sent = $sent.Substring(1) 

Write-Host $sent 
Cuestiones relacionadas