2014-02-14 72 views
0

我有一個生成的字符串像這樣的變量:替代的一個字符串中另一個變量

$x = jhgkjh**May**-**JUN**ojklkjh-jkl 

我想替換一個月縮寫與月份數$ X每次出現。所以結果會是這樣的:

$x = jhgkjh**05**-**06**ojklkjh-jkl 

對於我創建了2個數組:

$months = "Jan", "Feb", etc... 
$Nmonths = "01", "02" , etc... 

這個循環不工作:

$i = 0 
do { 
$x = $x.replace('$months[$i]','$Nmonths[$i]') 
$i = $i+1 
} 
until ("$i" -eq "12") 
$x 

請幫幫忙!

回答

0

Powershell在構造之前沒有做。嘗試這一個班輪,而不是你的循環。

0..11 | % { $x = $x -replace $months[$_],$Nmonths[$_] } 

..運營商創造了一系列的第一號和上一次的整數。

如果你仍然想使用傳統的流量控制結構,你可以用這個

while($i -lt 12) 
+1

PowerShell將有一個做,直到結構。試試這個:$ i = 0;做{$ i; $ i ++}直到($ i -eq 10) – mjolinor

+0

哇,蛋在我的臉上。不能相信我已經錯過了這麼長時間的臭味。 –

+0

基本上與While()相同,但是在循環結束時進行測試,所以它總是至少經過一次循環。 – mjolinor

1

樣本數據替換,直到線條看上去有點奇怪關於月份字符串的情況。無法確定是否區分大小寫,所以這裏有兩個稍微不同的解決方案。 開始磨片一個月縮寫和數字的哈希表:

[email protected]{ 
Jan = '01' 
Feb = '02' 
Mar = '03' 
Apr = '04' 
May = '05' 
Jun = '06' 
Jul = '07' 
Aug = '08' 
Sep = '09' 
Oct = '10' 
Nov = '11' 
Dec = '12' 
} 

使用string.replace()

$string = '$x = jhgkjh**May**-**Jun**ojklkjh-jkl' 
foreach ($Month in $Months.Keys) 
{ $string = $string.Replace($Month,$Months.$Month)} 

使用-Replace操作

$string = '$x = jhgkjh**May**-**JUN**ojklkjh-jkl' 
foreach ($Month in $Months.Keys) 
{ $string = $string -Replace $Month,$Months.$Month } 

string.replace()方法速度快,但-Replace運營商將在區分大小寫方面更靈活。

無論哪種方式,foreach循環應該是快於foreach-object

相關問題