2016-12-24 48 views
-2

我有一個字符串,可以從大約5個字符到任何給定的大小。我想要做的是獲得前10個字符,然後添加5個尾隨零並將結果保存在另一個變量中。不過,我需要結束字符串有15個字符。所以如果只有9個字符,應該有6個尾隨零。如果只有8個字符,然後7個尾隨零,等等PowerShell:修剪和添加尾部零點

JOE.BLOGS - > JOE.BLOGS000000

ANDREW.SMITH - > ANDREW.SMI00000

JIM - > JIM000000000000

我有一個特別艱難的時間,因爲子串給我的錯誤,如果字符串比我短指定:

$shadowSAM = $shadowUPN.substring(0,10) + '00000' 

另外我不確定如何添加正確數量的尾隨零,具體取決於字符串的實際長度(if/then/else的switch語句將是一個令人興奮的事情)。

這可能在PowerShell中嗎?

+0

顯示你已經嘗試到目前爲止 – Nkosi

+4

'$ S = 'JOE.BLOGS'; $ s.Substring(0,[Math] :: Min($ s.Length,10))。PadRight(15,'0')' – PetSerAl

+0

@PetSerAl你的回答像一個魅力一樣工作。我設法完成了我的腳本。非常感謝! – pmdci

回答

1

試試這個

(($str -split '' | select -first 10) -join '').PadRight(15, "0") 

或本

($str[0..9] -join '').PadRight(15, "0") 

或本

$str.substring(0, [Math]::Min($str.Length, 10)).PadRight(15, "0") 

或本

($str -replace '(.{10}).+','$1').PadRight(15, "0") 
+1

'($ str [0..9] -join'').PadRight(15,「0」)'將失敗,並出現Set-StrictMode -Version 3 '對於少於10個字符的字符串 – PetSerAl

1

「0」 oter解決方案* 15,以取代padleft

(($str2 -replace '(.{10}).+','$1') + ("0" * 15)).Substring(0, 15) 
+0

這一個也很完美,如果你們說這比使用padleft更好,那麼我會堅持這一點,再次感謝。 – pmdci

+1

這不是一個更好的方式,只是另一種方式(更少清晰的我同意);) – Esperento57