Trim 文件名但保留文件扩展名

Trim filename but keep file extension

有谁知道如何 trim string/filename 但保留文件扩展名?

例如:

我希望Picture1.jpg成为Pic.jpg.

我一直在摆弄 StrUtils 单元,但未能找到解决方案。 LeftStr 是第一个想到的。

将名称拆分为词干和扩展名。缩短茎。然后重新组合。像这样:

function ReduceFileName(const FileName: string; const MaxStemLength: Integer): string;
var
  Ext: string;
  StemLength: Integer;
begin
  Assert(MaxStemLength > 0);
  Ext := ExtractFileExt(FileName);
  StemLength := Length(FileName) - Length(Ext);
  if StemLength <= MaxStemLength then begin
    Result := FileName;
    exit;
  end;
  Result := Copy(FileName, 1, MaxStemLength) + Ext;
end;