powershell中的子串

时间:2017-10-20 14:34:24

标签: powershell

我通常使用:

 $ext = [IO.Path]::GetExtension($file)

从文件中获取扩展名。但是有些情况会引发异常,我并不真正关心这一点。所以我想尝试做同样的事情,假设输入只是一个字符串:

$a = $str.LastIndexOf('.')
$b = $str.length
$c = $b - $a
$ext = $str.Substring($str.LastIndexOf('.'), $c)

但假设输入是字符串吗?有没有更好/更漂亮的方法呢?

2 个答案:

答案 0 :(得分:2)

你可以简化这个:

(Get-Item -Path $File).Extension

可替换地:

PS C:\> $File = 'C:\Temp\Fold\File.exe'
PS C:\> $File -match '(?<Extension>\.\w+$)'
True
PS C:\> $Matches.Extension
.exe

PS C:\> ($File -split '\.')[-1]
exe

答案 1 :(得分:0)

根据BenH的评论,有一种方法。另一种方法是使用Split-Path首先获取文件名:

[string]$Path = "c:\path\to\somefile.withdots.csv"
$extension    = (Split-Path $path -Leaf).Split(".")[-1]