2015-12-24 4 views
1

У меня есть имя файла строку, содержащую несколько завершающих пробелов перед расширением:Как изменить строку «One Two Three <5 spaces> .zip» на «One Two Three.zip»

One Two Three  .Zip 

Я хочу, чтобы сохранить пробелы между словами, но удалите лишние пробелы после слова «Три», но перед «.Zip». Используя PowerShell, как я могу изменить эту строку на:

One Two Three.Zip 

?

ответ

0

Вы можете попробовать:

("One Two Three  .zip".Split('.') | % {$_.trim()}) -join '.' 

Вещь вы haveto uderrtand, что в Poweshell все является объектом. Сначала я применяю метод Split к строке. Этот метод генерирует массив из двух подстрок, затем для каждого из них (%) применяю метод Trim, затем я соединяю оба элемента массива с помощью '.'.

+0

Спасибо, что JPBlanc отлично работает - просто пытается понять, что происходит - на левой стороне трубы, кажется, строки слева и справа от "." возвращаются - тогда мне любопытно, что обе эти строки передаются через канал - так что $ содержит каждую из строк, а затем обрезает их в каждом цикле (%) - и затем присоединяет их? – user3511553

+0

Да, у вас это есть – JPBlanc

1

Ниже приведен подход, который использует FileInfo для захвата BaseName для файла (например, имя файла без расширения), а затем TrimEnd для удаления пробелов в конце BaseName, а затем добавляет расширение снова.

У PowerShell есть команда Get-Item, которая получит экземпляр FileInfo для вас, но ожидает, что файл будет существовать. При необходимости вы можете напрямую использовать System.IO.FileInfo.

$inputFileName = "One Two Three  .zip" 

# If you know the file exists, you can use the Get-Item command. 
$fileInfo = Get-Item $inputFileName 
$outputFileName = $fileInfo.BaseName.TrimEnd() + $fileInfo.Extension 
Write-Host $outputFileName 

# Or if the file doesn't exist, you can drop down to the .NET FileInfo class. 
$fileInfo = [System.IO.FileInfo]$inputFileName 
$outputFileName = $fileInfo.BaseName.TrimEnd() + $fileInfo.Extension 
Write-Host $outputFileName 
+0

Спасибо, Дэвид это выглядит хорошо, хотя я еще не тестировал его - мои руки полны Xmas turkey :) – user3511553

Смежные вопросы