删除所有。 (字符串)除了最后一个字符串之外的字符串

时间:2015-02-13 13:18:13

标签: powershell

除了最后一个,我需要删除字符串中的所有点。 例如,如果string是' 1.2.3.4.5"结果需要是" 1234.5" 这是powershell。我无法做到。

提前谢谢你,

3 个答案:

答案 0 :(得分:4)

RegEx替换(所有点后面都没有点)

"1.2.3.4" -replace "\.(?=.*\.)", ""

答案 1 :(得分:1)

我认为这就是诀窍:

function RemoveAllExceptLastDot ($inputString)
{
    $currentString = $inputString;

    while ($currentString.Split('.').Length -gt 2)
    {
        $indexOfFirstDot = $currentString.IndexOf('.');
        $currentString = $currentString.Substring(0, $indexOfFirstDot) + $currentString.Substring($indexOfFirstDot + 1, $currentString.Length - $indexOfFirstDot - 1);
    }

    Write-Output $currentString;
}

答案 2 :(得分:0)

如果您想为文件名执行此操作,这个可能更容易记住。它不使用正则表达式,只是很好的旧 String.Replace()

$fi = [io.fileinfo] 'foo.bar.txt'
$fi.BaseName.Replace('.', '') + $fi.Extension

当您像这样操作现有文件时,您不需要演员表:

Get-ChildItem . | Foreach-Object {
    $_.BaseName.Replace('.', '') + $_.Extension
}