除了最后一个,我需要删除字符串中的所有点。 例如,如果string是' 1.2.3.4.5"结果需要是" 1234.5" 这是powershell。我无法做到。
提前谢谢你,
答案 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
}