原始数据:
<tr><td>ABerglund@domain.com</td><td></td><td></td><td></td></tr>
<tr><td>AHill@domain.com</td><td></td><td></td><td></td></tr>
<tr><td>KBrowne@domain.com</td><td></td><td></td><td></td></tr>
<tr><td>LBonifaz@domain.com</td><td></td><td></td><td></td></tr>
<tr><td>RBready@domain.com</td><td></td><td></td><td></td></tr>
<tr><td>Bnet@domain.com</td><td></td><td></td><td></td></tr>
<tr><td>Fzone@domain.com</td><td></td><td></td><td></td></tr>
<tr><td>KBN@domain.com</td><td></td><td></td><td></td></tr>
在文件<tr>
中,需要在序列循环中逐行替换下面的列表
<tr class="danger">
<tr class="warning">
<tr class="active">
<tr class="success">
试过:
$str = Get-Content C:\Users\admin\Desktop\n\2.html
#odd
$f=0; $str.Split("`n") | % { if($f = !$f) { $_ } }
#even
$g=1; $str.Split("`n") | % { if($f = !$f) { $_ } }
$f -replace "<tr>", '<tr class="active">'
$g -replace "<tr>", '<tr class="success">'
结果未按预期发布
答案 0 :(得分:1)
要使四个旋转类计数线并进行模数除法%
并使用切换命令。
$file = Get-Content "C:\Users\admin\Desktop\n\2.html"
$cnt=0
ForEach ($line in $file){
if ($line -match '^\<tr\>') {
switch ($cnt) {
0 {$line -replace '\<tr\>','<tr class="danger">'}
1 {$line -replace '\<tr\>','<tr class="warning">'}
2 {$line -replace '\<tr\>','<tr class="active">'}
3 {$line -replace '\<tr\>','<tr class="success">'}
}
$cnt++
$cnt%=4
} else {
$line
}
}
或者将类放在数组中并按索引插入:
$file = Get-Content "C:\Users\admin\Desktop\n\2.html"
$classes = ('danger','warning','active','success')
$cnt=0
ForEach ($line in $file){
if ($line -match '^\<tr\>') {
$line -replace '\<tr\>', ('<tr class="'+$($classes[$cnt])+'">')
$cnt++
$cnt%=4
} else {
$line
}
}