终止数组变量

时间:2015-05-26 15:43:14

标签: powershell

有没有更好的方法来写这个:

<div style='text-align: center; border: 1px solid black;'>text
    <div style='border:1px solid black;height: 150px;'>
        <img style='float: left; clear: both;' src='http://iconizer.net/files/Sketchdock_Ecommerce_Icons/orig/arrow-up-blue.png'>
        <img style='float: left; clear: both;' src='http://iconizer.net/files/Sketchdock_Ecommerce_Icons/orig/arrow-down-blue.png'>
    </div>
</div>

我的外观如下:for($j =0; $j -lt 11; $j++){ if($averagetime[$j] -ne "no data"){ Write-host $type[$j] "(" $1st[$j] "):" $averagetime[$j] } }

我希望输出如下:Multiaxial_Milling ( 5 ): 3.46

我知道Multiaxial_Milling (5): 3.46有效,但它不适用于数组。目前这对我来说只是一个美容问题,但我想这可能会成为一个问题。

2 个答案:

答案 0 :(得分:5)

您可以使用sub-expression $(...)

将数组索引放在字符串中
//jParams comes from a JSON server response
var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil)
            if data != nil {
                var jdata = JSON(data: data!)
                var jParams=jdata["responseData"]["extraData"]["params"]

PowerShell会将Write-host $type[$j] "($($1st[$j])):" $averagetime[$j] 中的内容评估为普通表达式,然后将$(...)替换为此表达式返回的值。以下是演示:

$(...)

但请注意,子表达式仅适用于双引号字符串文字PS > "$(1 + 1)" 2 PS > "a$(1 + 1)b" a2b PS > 。如果您将它们放在单引号"..."中,它们将被视为普通文本。

答案 1 :(得分:4)

format operator在这种情况下也是一个不错的选择,特别是如果输出格式变得特别复杂。

一些基本数组的简单示例。

$evens = 2,4,6,8
$odds = 1,3,5,7

for($j =0; $j -lt 4; $j++){
    Write-Host ("Index {0}: Even - {1} | Odd - {2}" -f $j,$evens[$j],$odds[$j])
}

将净化以下输出

Index 0: Even - 2 | Odd - 1
Index 1: Even - 4 | Odd - 3
Index 2: Even - 6 | Odd - 5
Index 3: Even - 8 | Odd - 7

注意:我们需要在此处使用括号,否则-f将被选为Write-Host的参数。如果您只是将其发送到标准输出,则可以省略Write-Host和括号。