当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何在 PowerShell 中连接字符串

作者:精品下载站 日期:2024-12-14 03:44:00 浏览:13 分类:玩电脑

如何在 PowerShell 中连接字符串


从 PowerShell 输出数据时,您经常需要连接两个或多个字符串或变量。 PowerShell 中的连接字符串主要是使用 + 运算符完成的。但还有其他方法可以连接字符串。

在 PowerShell 中连接字符串或变量的问题通常是找到正确的输出方法。您可能会在两个字符串之间需要额外的空格,或者在输出中得到+号,这当然是您不想要的。

在本文中,我们将了解在 PowerShell 中连接多个字符串的不同方法。

Powershell连接字符串

在 PowerShell 中连接字符串的基本方法是使用 + 运算符。使用 + 运算符时,两个字符串将简单地连接在一起。让我们从以下两个字符串开始:

$string1 = "The quick brown fox"
$string2 = "jumps over the lazy dog"

现在如果我们想在PowerShell控制台中一起输出这些字符串,人们往往倾向于执行以下操作:

Write-Host $string1 + $string2

# Result
The quick brown fox + jumps over the lazy dog

但是如果你看一下结果,你会发现输出中也有 + 号,这是我们不想要的。将两个字符串输出到控制台的正确方法是将它们放在一起。

Write-Host $string1 $string2

# Result
The quick brown fox jumps over the lazy dog

但这不是连接字符串。要实际将字符串连接在一起,我们可以首先使用 + 运算符将结果存储在另一个变量中:

$string1 = "The quick brown fox"
$string2 = "jumps over the lazy dog"

$result = $string1 + $string2

Write-Host $result

# Result
The quick brown foxjumps over the lazy dog

这里唯一的问题是你错过了两个字符串之间的空格。因此,为了解决这个问题,您还可以在两个字符串之间连接一个空格:

$result = $string1 + " " + $string2

使用连接运算符

在 PowerShell 中连接字符串的另一种方法是使用连接运算符。 join 运算符允许您使用指定的分隔符连接两个或多个字符串。以我们的两个示例字符串为例,我们可以执行以下操作:

$result = $string1,$string2 -join " "

# Result
The quick brown fox jumps over the lazy dog

另一种选择是使用 .Net 连接方法。原理和结果与连接运算符相同,只是书写风格有点不同:

[string]::Join(' ',$string1,$string2)

使用格式运算符

当您需要将多个变量插入到字符串中时,使用字符串格式运算符可能是一个不错的选择。格式运算符 -f 的优点是使用较长的字符串或多个变量更容易读取和格式化。

格式运算符使用占位符来确定要插入字符串或变量的位置。占位符从 0 开始编号并放置在大括号之间。

以下面的示例为例,我们有一个带有几个字符串的 PSCusstomObject。我们可以使用字符串格式运算符将 PowerShell 中的这些字符串连接成另一个字符串。

$obj = [PSCustomObject]@{
  Name = 'Lazy Dog'
  Action = 'jump over'
  Item = "3 fences"
}

write-host ("can the {0} really {1} more than {2}" -f $obj.name, $obj.action, $obj.item)

# Result
can the Lazy Dog really jump over more than 3 fences

您不需要在 -f 运算符的右侧使用变量。您还可以直接插入字符串或整数:

$obj = [PSCustomObject]@{
  Name = 'Lazy Dog'
  Action = 'jump over'
  Item = "fences"
}

write-host ("can the {0} really {1} {2} {3} {4}" -f $obj.name, $obj.action, 'less than', 5, $obj.item)

# Result
can the Lazy Dog really jump over less than 5 fences

如果您有一个包含要在 PowerShell 中连接的字符串的数组,那么您还可以使用格式运算符,而无需为占位符指定每个单独的值。

$values = @(
    "Lazy Dog"
    "Jumps"
    "fences"
)
'Did you know that the {0} {1} 5 {2}?' -f $values

# Result 
Did you know that the Lazy Dog Jumps 5 fences?

连接字符串与变量

将字符串与变量(尤其是对象或哈希表)连接起来总是有点具有挑战性。如果您想将单个变量插入到字符串中,那么您只需将字符串放在双引号“之间,然后直接插入变量:

$var = 'fox'

Write-Host "The quick brown $var jumps over the lazy dog"

# Result
The quick brown fox jumps over the lazy dog

[玩转系统] 如何在 PowerShell 中连接字符串

但是当你用对象的属性来做到这一点时,它就不起作用了。要解决这个问题,您需要使用变量替换,将变量放置在 $() 中。

$obj = [PSCustomObject]@{
  Name = 'Lazy Dog'
  Action = 'jump over'
  Item = "fences"
}

Write-Host "The quick brown fox jumps over the $($obj.name)"

# Result
The quick brown fox jumps over the Lazy Dog

使用连接方法

在PowerShell中,我们还可以使用.Net concat方法来连接字符串。 Join 运算符或方法的优点是您不需要指定分隔符,但这也使用例受到一些限制。

$values = @(
    "Lazy Dog"
    "Jumps"
    "fences"
)

[string]::Concat('Lazy Dog','Jumps','fences')
# Or when you have an array with values:
[string]::Concat($values)

# Result for both methods:
Lazy DogJumpsfences

总结

PowerShell 中有很多连接字符串的方法,甚至比我在这里描述的还要多。这些方法在用例性能方面几乎没有差异。所以使用的方法实际上取决于情况和写作风格。

当您只需要连接几个字符串时,使用 + 运算符通常是首选方法。当您需要连接多个字符串或值时,格式运算符(占位符方法)通常更易于阅读。

另请记住,当您想要输出对象属性时,需要将它们括在括号 $() 中,并使用双引号将字符串括起来。

我希望本文能够帮助您在 PowerShell 中连接字符串。如果您有任何疑问,请在下面发表评论。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯