From 6dccc324b662b5fe49e8cbd0031e5879680838f6 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Mon, 13 Dec 2021 13:40:32 +0800 Subject: [PATCH] added SplitFilename and ReplaceExtName functions at filesystem/Filename.h --- inc/hgl/filesystem/Filename.h | 45 ++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/inc/hgl/filesystem/Filename.h b/inc/hgl/filesystem/Filename.h index 3a489e5..49c1989 100644 --- a/inc/hgl/filesystem/Filename.h +++ b/inc/hgl/filesystem/Filename.h @@ -210,10 +210,10 @@ namespace hgl /** * 清除完整文件名中的扩展名 * @param fullname 完整文件名 - * @param include_dot 是否包括点也清除 + * @param clear_dot 是否包括点也清除 */ template - inline String TrimFileExtName(const String &fullname,bool include_dot=false) + inline String TrimFileExtName(const String &fullname,bool clear_dot=false) { int end=fullname.FindChar(T('?')); //url的文件名,以?为结束 @@ -225,7 +225,7 @@ namespace hgl if(pos==-1) return String(); - return include_dot? fullname.SubString(0,pos): + return clear_dot? fullname.SubString(0,pos): fullname.SubString(0,pos+1); } @@ -296,6 +296,45 @@ namespace hgl return(String()); } + /** + * 截取完整路径中的路径名和文件名 + * @param pathname 拆分后的路径名 + * @param filename 拆分后的文件名 + * @param fullname 拆分前的完整路径文件名 + */ + template + inline bool SplitFilename(String &pathname,String &filename,const String &fullname) + { + if(fullname.Length()<=1) + return false; + + const T spear_char[] = { '/','\\' }; + + const int pos=fullname.FindRightChars(spear_char); + + if(pos==-1) + return(false); + + pathname.Strcpy(fullname,pos); + filename.Strcpy(fullname.c_str()+pos+1); + + return(true); + } + + template + inline String ReplaceExtName(const String &old_name,const String &new_extname,const T split_char='.') + { + if(old_name.Length()<=1) + return(String::charOf(split_char)+new_extname); + + const int pos=old_name.FindRightChar(split_char); + + if(pos!=-1) + return old_name.SubString(0,pos)+new_extname; + else + return old_name+String::charOf(split_char)+new_extname; + } + inline UTF8String MergeFilename(const UTF8String &pathname,const UTF8String &filename) ///<组合路径名与文件名 {return MergeFilename(pathname,filename,HGL_DIRECTORY_SEPARATOR,HGL_DIRECTORY_SEPARATOR_U8STR);}