Выделить все слова из строки, кроме последнего (PowerShell) - PullRequest
4 голосов
/ 15 февраля 2012

Итак, что я пытаюсь добиться, это выбрать все слова из заданной строки, кроме последнего. Итак, у меня есть несколько строк;

On The Rocks
The Rocks
Major Bananas

Я хочу выбрать все слова, кроме последнего, из каждой строки. Я понял, что могу использовать split (), чтобы воспринимать каждое слово как отдельное. Хотя я не могу понять это дальше.

Заранее спасибо.

Ответы [ 6 ]

8 голосов
/ 15 февраля 2012
$string.SubString(0, $string.LastIndexOf(' '))
6 голосов
/ 15 февраля 2012

Вот как я могу сделать что-то подобное.

$Sample = "String sample we can use"
$Split = $Sample.Split(" ")
[string]$split[0..($Split.count-2)]
2 голосов
/ 16 февраля 2012

Вы можете сделать это так:

$test -replace "\S*\s*$"
1 голос
/ 15 февраля 2012

Это удалит последнее слово, даже если есть пробелы. Он также сохраняет несколько пробелов между словами и удаляет пробелы перед последним словом.

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

Последнее слово не удаляется, если строка представляет собой одно слово.

0 голосов
/ 13 июля 2017

Оператор .. прекрасно работает, но при работе с каналами вместо него можно использовать командлет select (псевдоним Select-Object).Вот как можно удалять элементы из массива с помощью командлета select.

PS> "On The Rocks", "The Rocks", "Major Bananas" |
foreach { write-host $($_ -split ' ' | select -skiplast 1) }
On The
The
Major
PS>
0 голосов
/ 15 февраля 2012
$string -replace '^(.+)\b.+$','$1'
...