选择字符串中除最后一个之外的所有单词 (PowerShell)

发布于 2025-01-05 17:58:25 字数 198 浏览 0 评论 0原文

所以我想要实现的是从给定字符串中选择除最后一个之外的所有单词。 所以我有一些字符串;

On The Rocks
The Rocks
Major Bananas

我想选择所有单词,除了每个字符串中的最后一个单词。 我发现我可以使用 split() 将每个单词分开。虽然我无法进一步弄清楚。

提前致谢。

So what I am trying to achieve is selecting all words from a given string, except the last one.
So I have a few strings;

On The Rocks
The Rocks
Major Bananas

I want to select all words, except the last one from every string.
I figured out I could use split() to take every word as separate. Though I can't figure it out any further.

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

因为看清所以看轻 2025-01-12 17:58:25
$string.SubString(0, $string.LastIndexOf(' '))
$string.SubString(0, $string.LastIndexOf(' '))
在巴黎塔顶看东京樱花 2025-01-12 17:58:25

这是我可能会做这样的事情的方法。

$Sample = "String sample we can use"
$Split = $Sample.Split(" ")
[string]$split[0..($Split.count-2)]

Here's how I might do something like this.

$Sample = "String sample we can use"
$Split = $Sample.Split(" ")
[string]$split[0..($Split.count-2)]
凉月流沐 2025-01-12 17:58:25

.. 运算符效果很好,但在使用管道时,您可以使用 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>

The .. operator works great, but when working with pipes, you can use the select cmdlet (alias for Select-Object) instead.
Here's how you can remove items from an array by using the select cmdlet.

PS> "On The Rocks", "The Rocks", "Major Bananas" |
foreach { write-host $($_ -split ' ' | select -skiplast 1) }
On The
The
Major
PS>
望笑 2025-01-12 17:58:25

你可以这样做:

$test -replace "\S*\s*$"

You can do it like this:

$test -replace "\S*\s*$"
岁月蹉跎了容颜 2025-01-12 17:58:25

即使有尾随空格,这也会删除最后一个单词。它还保留单词之间的多个空格,并删除最后一个单词之前的空格。

'this   is   a    test ' -replace '^(.+\b)\s+\S+\s*','$1'

如果字符串是单个单词,它不会删除最后一个单词。

This will remove the last word even if there are trailing spaces. It also preserves multiple spaces between words, and removes spaces before the last word.

'this   is   a    test ' -replace '^(.+\b)\s+\S+\s*','$1'

It doesn't remove the last word if the string is a single word.

手长情犹 2025-01-12 17:58:25
$string -replace '^(.+)\b.+
,'$1'
$string -replace '^(.+)\b.+
,'$1'
辞别 2025-01-12 17:58:25

老帖子但很有用。我发现使用 -skiplast 更符合逻辑/可读。
(注意到 @mrsauravsahu 也提到过)

"Hello world skip-me".Split(" ") | Select -skiplast 1  

#Output: "Hello world"

注意:记住 split() 返回数组。

Old post but useful. I found use of -skiplast more logical/readable.
(noticed it's also been mentioned by @mrsauravsahu)

"Hello world skip-me".Split(" ") | Select -skiplast 1  

#Output: "Hello world"

Note: Remember split() returns Array.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文