【发布时间】:2020-01-17 05:48:09
【问题描述】:
所以我想要实现的是从给定字符串中选择所有单词,除了最后一个。 所以我有几个字符串;
On The Rocks
The Rocks
Major Bananas
我想选择所有单词,除了每个字符串中的最后一个单词。 我发现我可以使用 split() 将每个单词分开。虽然我想不通了。
提前致谢。
【问题讨论】:
标签: arrays powershell split
所以我想要实现的是从给定字符串中选择所有单词,除了最后一个。 所以我有几个字符串;
On The Rocks
The Rocks
Major Bananas
我想选择所有单词,除了每个字符串中的最后一个单词。 我发现我可以使用 split() 将每个单词分开。虽然我想不通了。
提前致谢。
【问题讨论】:
标签: arrays powershell split
$string.SubString(0, $string.LastIndexOf(' '))
【讨论】:
这就是我如何做这样的事情。
$Sample = "String sample we can use"
$Split = $Sample.Split(" ")
[string]$split[0..($Split.count-2)]
【讨论】:
$split[0..($Split.count - 2)] -join " ",因为它清楚地表明了您的意图。 (如果不是,那你为什么不用$Sample.Split())?
你可以这样做:
$test -replace "\S*\s*$"
【讨论】:
即使有尾随空格,这也会删除最后一个单词。它还保留单词之间的多个空格,并删除最后一个单词之前的空格。
'this is a test ' -replace '^(.+\b)\s+\S+\s*','$1'
如果字符串是单个单词,它不会删除最后一个单词。
【讨论】:
$string -replace '^(.+)\b.+$','$1'
【讨论】:
.. 运算符效果很好,但是在使用管道时,您可以使用 select cmdlet(Select-Object 的别名)。
以下是使用 select cmdlet 从数组中删除项目的方法。
PS> "On The Rocks", "The Rocks", "Major Bananas" |
foreach { write-host $($_ -split ' ' | select -skiplast 1) }
On The
The
Major
PS>
【讨论】: