// // Modifies the Filename's extension. The period is considered part // of the extension. // // "/foo/bar/baz.txt", ".dat" --> "/foo/bar/baz.dat" // "/foo/bar/baz.txt", "" --> "/foo/bar/baz" // "/foo/bar/baz", ".txt" --> "/foo/bar/baz.txt" // UnicodeString ChangeFileExtension(const UnicodeString & Path, const UnicodeString & Ext, wchar_t Delimiter) { UnicodeString FileName = ExtractFilename(Path, Delimiter); return ExtractDirectory(Path, Delimiter) + FileName.SubString(1, FileName.RPos(L'.')) + Ext; }
// // Returns the file's extension, if any. The period is considered part // of the extension. // // "/foo/bar/baz.txt" --> ".txt" // "/foo/bar/baz" --> "" UnicodeString ExtractFileExtension(const UnicodeString & Path, wchar_t Delimiter) { UnicodeString FileName = ExtractFilename(Path, Delimiter); intptr_t N = FileName.RPos(L'.'); if (N > 0) { return FileName.SubString(N); } return UnicodeString(); }
// // Returns only the Filename part of the Path. // // "/foo/bar/baz.txt" --> "baz.txt" UnicodeString ExtractFilename(const UnicodeString & Path, wchar_t Delimiter) { return Path.SubString(Path.RPos(Delimiter) + 1); }
// // Returns everything, including the trailing Path separator, except the Filename // part of the Path. // // "/foo/bar/baz.txt" --> "/foo/bar/" UnicodeString ExtractDirectory(const UnicodeString & Path, wchar_t Delimiter) { return Path.SubString(1, Path.RPos(Delimiter) + 1); }