我正在嘗試獲取串列中每個字串的第一個字符。該串列包含:
hehee_one
hrhr_one
test_two
我正在使用 foreach-object 回圈串列
ForEach-Object {($jsonRules.name[0])}
但這所做的只是獲得第一個元素,這是有道理的。如果我這樣做:
ForEach-Object {($jsonRules.name[0][0])}
我只得到第一個元素的第一個字符,而不是其余的..
所以請幫助我..謝謝
uj5u.com熱心網友回復:
Santiago Squarzon在評論中提供了關鍵指標:
通過 pipeline提供您希望ForEach-Objectcmdlet 操作的字串,這允許您通過自動變數參考每個$_字串(為簡潔起見,以下使用陣列文字作為輸入):
PS> 'tom', 'dick', 'harry' | ForEach-Object { $_[0] }
t
d
h
或者,對于已經在記憶體中的值,使用.ForEach陣列方法以獲得更好的性能:
('tom', 'dick', 'harry').ForEach({ $_[0] })
該陳述句提供了最佳性能:foreach
foreach ($str in ('tom', 'dick', 'harry')) { $str[0] }
至于你嘗試了什么:
ForEach-Object { ... }- 沒有管道輸入 - 本質上與...直接執行相同。因此,用上面的樣本輸入表示:
你執行了:
ForEach-Object { ('tom', 'dick', 'harry')[0][0] }這與以下內容相同:
('tom', 'dick', 'harry')[0][0]因此,它從輸入陣列(第一個)中提取第一個元素,
[0]然后僅將第二個元素[0]應用于該字串,因此僅產生't'.
換句話說:僅使用來自管道的輸入
ForEach-Object才有意義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/462228.html
上一篇:Powershell洗掉格式串列中的空白行,將結果放入剪貼板并輸出txt
下一篇:如何用管道替換逗號?
