中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Powershell -F 格式操作符

發布時間:2020-04-04 16:55:26 來源:網絡 閱讀:861 作者:beanxyz 欄目:開發技術

今天跟網友扯淡,網友給了兩行代碼,可以輸出以下的效果

1..9 | %{$a=@()} {$a+=$("{0}{1}{0}" -f (" " * (9-$_)),("$_" * (2*$_-1)))}{$a[0..8+7..0]} 
1..9 | %{$a=""}{for ($i=1;$i -le $_;$i++){$a+="{0,-7}" -f "   $i X $_=$($i*$_)"};$a+="`r`n"}{$a}


Powershell -F 格式操作符


第一眼看上去,老實承認真沒看懂這兩行怎么工作的,仔細學習了一會,終于明白了邏輯關系。

這兩行代碼主要利用的是PowerShell 里面利用-F的格式操作符。

參考資料如下

http://ss64.com/ps/syntax-f-operator.html


這個操作符主要有2個表達形式:


表達形式1

"String with placeholders" -f "Array of values to place into the placeholders"

比如說

Get-ChildItem c:\temp | ForEach-Object {'Filename: {0} Created: {1}' -f $_.fullname,$_.creationtime}

可以看見Filename的名字分配給了 fullname這個屬性;而Created分配給了creationtime這個屬性

Powershell -F 格式操作符


表達形式2, I表示位置,A表示空格位置,負數表示右邊加空格,正數表示左邊加空格,FS是一些格式選項,比如HEX進制,百分比等等。

 "{I,A:FS} {I,A:FS} {I,A:FS}.." -f "string0", "string1", "string2"...


上面提到的兩個例子主要就是利用了第二種表達方式。現在來仔細看看。


1..9 | %{$a=@()} {$a+=$("{0}{1}{0}" -f (" " * (9-$_)),("$_" * (2*$_-1)))}{$a[0..8+7..0]}


金字塔的基本原理都知道,算好每一行的空格和數字數量,然后寫循環就行。

首先 1到9 通過管道傳入,然后對于每一個數字,他創建了一個數組,{0}{1}{0} 對應后面提供的兩個字符串,剛好滿足“空格”+"數字"+"空格“這個格式。{0}對應的就是(" " *(9-$_)),{1}對應的就是("$_"*(2*$_-1))

累加起來,$a剛好就是金字塔的上半部分。最后通過$a[0..8]輸出上半截,$a[7..0]輸出下半截~



1..9 | %{$a=""}{for ($i=1;$i -le $_;$i++){$a+="{0,-7}" -f "   $i X $_=$($i*$_)"};$a+="`r`n"}{$a}


這個例子的思路也很相似。管道傳入每一個數字,分別列出來,{0,-7}表示的就是在當前輸出字符串右邊加7個空格而已;注意這個例子里面他初始化創建的$a是一個空字符串,因此加進去的時候每一個元素他不會像數組一樣自動換行,作者在每次循環結束加了個回車換行符。




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武宣县| 花莲县| 福贡县| 安新县| 乐亭县| 柞水县| 丹棱县| 平原县| 宿迁市| 清原| 新野县| 南康市| 萨嘎县| 临朐县| 吴江市| 武定县| 朝阳县| 安化县| 宾川县| 江华| 海原县| 普兰店市| 宁阳县| 镇康县| 图片| 门头沟区| 汪清县| 始兴县| 曲靖市| 汨罗市| 淮阳县| 南宁市| 江都市| 哈巴河县| 肇源县| 酒泉市| 于田县| 沾化县| 汾阳市| 仁布县| 神池县|