使用命名索引的字符串格式和PowerShell中的哈希表

时间:2018-02-22 20:41:07

标签: string powershell format string-formatting

我知道如何使用这样的字符串格式:

"{0,-20} | {1,5} | {2}" -f "bob", "3", "you@me.com"

但是阅读起来非常麻烦和混乱。有没有办法使用命名索引和哈希表?

这样的事情:

"{name,-20} | {age,5} | {mail}" ??? @{
    "name" = "bob";
    "age" = "3";
    "mail" = "you@me.com"
}

2 个答案:

答案 0 :(得分:1)

你可以像这样接近它:

<a href="#thenavbar" class="navbar-toggler" data-toggle="collapse" title="expand and collapse menu"><img class="svgicon" src="http://www.iconarchive.com/download/i86425/martin-berube/flat-animal/duck.ico" alt="expand menu icon" width="50px"/></a>

<div id="thenavbar" class="collapse">
    <h2 class="offscreen">Site Navigation</h2>
    <div id="topnavlist" class="navbar-nav align-content-between align-items-center">
        <div class="nav-item"><a class="nav-link" href="#example">Home</a></div>
        <div class="nav-item"><a class="nav-link" href="#example">About Us</a></div>
        <div class="nav-item"><a class="nav-link" href="#example">People</a></div>
        <div class="nav-item"><a class="nav-link" href="#example">Projects</a></div>
        <div class="nav-item"><a class="nav-link" href="#example">Work With Us</a>
        <div class="nav-item"><a class="nav-link" href="#example">Products</a></div>
    </div>
</div>

如果您对简化和可读性感兴趣,我建议将其分解:

@{
    "name" = "bob";
    "age" = "3";
    "mail" = "you@me.com"
} | ForEach-Object { "{0,-20} | {1,5} | {2}" -f $_.name,$_.age,$_.mail}
$info = @{
        "name" = "bob";
        "age" = "3";
        "mail" = "you@me.com"
    }

$fString = "{0,-20} | {1,5} | {2}"

$fString -f $info.Name, $info.age, $info.mail

答案 1 :(得分:0)

我尝试在PowerShell中避免使用这种字符串格式,因为使用变量扩展通常更具可读性。即使你有一些罕见的格式要求,它仍然可以读取ok-ish。您可以轻松查看哪个变量位于何处,使用-f格式时不是这种情况。

$name = 'bob'
$age  = 3
$mail = 'you@me.com'

"$($name.PadRight(20)) | $($age.ToString().PadLeft(5)) | $mail"