2014-07-07 95 views
0

我们正在创建一个大脚本,需要生成一些HTML代码。这一切工作正常,我收集了我需要的所有信息在数组$HTMLcodePowerShell插入阵列

我仍然有点在数组/字符串操作noobot,所以我想知道是否有可能在数组HTMLcode的每一行上面插入一行文本,以文本ERROR开头?

[email protected]() 
$HTMLcode += "ERROR: Problem 1<br>" 
$HTMLcode += "You did this wrong.. <br>" 
$HTMLcode += "ERROR Problem 2<br>" 
$HTMLcode += "Something happened here.. <br>" 
$HTMLcode += "ERROR Porblem 3<br>" 
$HTMLcode += "Did you try.. <br>" 

期望的结果将是:

[email protected]() 
$HTMLcode += "--------------------------<br>" 
$HTMLcode += "ERROR: Problem 1<br>" 
$HTMLcode += "You did this wrong.. <br>" 
$HTMLcode += "--------------------------<br>" 
$HTMLcode += "ERROR Problem 2<br>" 
$HTMLcode += "Something happened here.. <br>" 
$HTMLcode += "--------------------------<br>" 
$HTMLcode += "ERROR Porblem 3<br>" 
$HTMLcode += "Did you try.. <br>" 

谢谢您的帮助。

回答

1

除非您小心,如果管道中的操作(cmdlet)返回两个对象,则它们都将作为单独的对象放置在管道中。

例如。

2,4,6 | % { %_/2; $_ } 

回报

 
1 
2 
2 
4 
3 
6 

因此,你可以这样做:

$updatedHtmlCode = $HTMLCode | 
     Select-Object { if ($_ -clike 'ERROR*') { '--------------------------<br>' } $_ } 
+0

谢谢你的帮助理查德,但它并没有真正给出预期的结果。它使6个不同的数组与逗号分隔符之间。这使得它不适合在HTML中使用。 – DarkLite1

+0

@ DarkLite1然后再发生一些事情。刚刚测试过''foo“,”bar“,”bax“| %{if($ _ -eq'bar'){“xyzzy”} $ _} | %{write-host($ i ++); $ _}',计数清楚地显示最后一个'select-object'执行4次。 – Richard

+0

我现在正在尝试另一种方法,它可以通过将数组转换为列表'$ list = New-Object System.Collections.ArrayList(,$ HTMLcode)'来获得更多的可读性,然后用'$ list.Insert( 2, “文本”)'。现在我只需要弄清楚如何为所有以ERROR开头的文本找到正确的ID号“Int StartIndex”值,因为它不接受文本字符串。 – DarkLite1

0

另一种可能性:

$htmlcode = @() 
$HTMLcode += "ERROR: Problem 1<br>" 
$HTMLcode += "You did this wrong.. <br>" 
$HTMLcode += "ERROR Problem 2<br>" 
$HTMLcode += "Something happened here.. <br>" 
$HTMLcode += "ERROR Porblem 3<br>" 
$HTMLcode += "Did you try.. <br>" 

$htmlcode -replace '^(?=ERROR)',"--------------------------<br>`n" 


--------------------------<br> 
ERROR: Problem 1<br> 
You did this wrong.. <br> 
--------------------------<br> 
ERROR Problem 2<br> 
Something happened here.. <br> 
--------------------------<br> 
ERROR Porblem 3<br> 
Did you try.. <br> 

这不会增加任何额外的元素添加到数组它只是取代了错误包含带有嵌入换行符的附加文本的新字符串。

对于html,完成后可能会通过Out-String发送,最终结果应该与将新行插入到数组中一样。

+0

太棒了!这也很有用,谢谢'-replace'上的提示:) – DarkLite1