2012-08-09 37 views
40

Soy [completamente nuevo en PowerShell y] concatenando una cadena en un bucle, si ocurre una condición especial, debería insertar un salto de línea ... ¿cómo puedo hacer esto?Cómo dividir líneas en PowerShell?

Básicamente buscando el equivalente de \n.

$str = "" 
foreach($line in $file){ 
    if($line -Match $review){ #Special condition 
    $str += ANSWER #looking for ANSWER 
    } 
    #code..... 
} 

Hasta ahora he intentado

"\n" '\n' "\N" '\N' "\r" '\r' "\R" '\R' '`n' '`r' '-n' '-r' 

Respuesta

74

Trate `n (no'`n')

Para obtener una lista completa de escapar caracteres ver:

Help about_Escape_character

El código debe ser

$str += "`n" 
+0

Gracias, pero no funciona. me da 'El término ' ' no se reconoce como el nombre de un cmdlet, función, sc ....' – user454322

+1

Los ejemplos en 'Help about_Escape_character' me ayudaron a resolver el problema. Editando la respuesta para mostrar la solución – user454322

+0

Entonces para dividir una cadena multilínea, use '$ filestobackup = $ files.split (" \ 'n"); ' – bgStack15

8

Creo que lo encontré. Todo lo que tiene que hacer es escribir "` n "(¡CON LAS MARCAS DE COTIZACIÓN!)

¡Gracias!

0

Sólo en caso de que alguien viene a través de este, para aclarar la respuesta es `n n acento grave, no solo garrapata n

+3

En realidad es un" acento grave ". Una tilde es ~ – elkirkmo

+0

Gracias por la aclaración. – SQLMac

0

Si escapar ya no funciona, puede intentar esto:

$str += $("" | Out-String)

Simplemente no agrega nada, sino como Out-String, que crea una nueva línea.

0

Usted también puede utilizar:

Write-Host ""; 

O, para decirlo en términos de su pregunta específica:

$str = "" 
foreach($line in $file){ 
    if($line -Match $review){ #Special condition 
    $str += Write-Host "" 
    $str += ANSWER #looking for ANSWER 
    } 
    #code..... 
} 
Cuestiones relacionadas