2017-03-16 107 views
2

我想添加一個換行符不添加整個「諾特爾線的話,這裏是我的代碼:與換行符字符串連接工作不正常

"-- MANIFEST COUNT -- " >> "C:\psTest\test1.txt" 
$manCount = (Get-ChildItem -filter "*manifest.csv").Count 
$manCount + " `n" >> "C:\psTest\test1.txt" 

我認爲+ " `n"將釘斷行在伯爵身上,但它沒有做任何事情。我也試過+ "`r`n"(我在SO的其他地方發現了這個建議),但無濟於事。

回答

1

讓我一個解釋補充your own solution

因爲$manCount的LHS,是[int]型,

$manCount + " `n" 

實際上是相同的:

$manCount + [int] " `n".Trim() 

或:

$manCount + [int] "" 

這是有效地相同:

$manCount + 0 

,因此無操作。

在PowerShell中,表達式的LHS類型決定了RHS將被強制轉換的類型(如有必要)。

因此,通過鑄造$manCount[string]+然後執行串聯,如您預期。

由於Matt指出在你的答案評論,您還可以使用串插

"$manCount `n" 
+0

我來自VB,其中字符串和數字之間的連接將以字符串結尾或引發錯誤。這返回的數字沒有錯誤,沒有換行符,這對我來說並不直觀。 –

+0

@ n8。我懂了。 PowerShell的自動類型轉換通常非常有用,但它確實有其缺陷。 – mklement0

1

的整數需要被轉換爲字符串,以便串聯採取:

"-- MANIFEST COUNT -- " >> "C:\psTest\test1.txt" 
$manCount = (Get-ChildItem -filter "*manifest.csv").Count 
[string]$manCount + "`r`n" >> "C:\psTest\test1.txt" 
+3

'' 「$ manCount'r'n」''也將正常工作。使用諸如「Add-Content」cmdlet之類的東西也可能有幫助。如果沒有別的只是爲了可讀性 – Matt

+0

啊,我不習慣於在這樣的字符串中工作的變量。 –