如何将字符串“One Two Three< 5 space> .zip”更改为“One Two Three.zip”

时间:2015-12-24 15:47:58

标签: powershell

我有一个文件名字符串,在扩展名之前包含几个尾随空格:

One Two Three     .Zip 

我想在之间保留之间的空格,但是在“Three”之后但在“.Zip”之前删除任何多余的空格。使用PowerShell,如何将该字符串更改为:

One Two Three.Zip

2 个答案:

答案 0 :(得分:1)

这是一种方法,它使用FileInfo来获取文件的BaseName(即没有扩展名的文件名),然后TrimEnd删除BaseName末尾的空格,然后重新附加Extension。

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

答案 1 :(得分:0)

您可以尝试:

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

你对uderrtand的看法是,在Poweshell中,一切都是对象。首先,我在字符串上应用方法Split。这个方法生成一个包含两个子串的数组,然后为每个子串(%)应用方法Trim,然后我用'.'加入两个数组元素。