added SplitFilename and ReplaceExtName functions at filesystem/Filename.h
This commit is contained in:
@@ -210,10 +210,10 @@ namespace hgl
|
|||||||
/**
|
/**
|
||||||
* 清除完整文件名中的扩展名
|
* 清除完整文件名中的扩展名
|
||||||
* @param fullname 完整文件名
|
* @param fullname 完整文件名
|
||||||
* @param include_dot 是否包括点也清除
|
* @param clear_dot 是否包括点也清除
|
||||||
*/
|
*/
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline String<T> TrimFileExtName(const String<T> &fullname,bool include_dot=false)
|
inline String<T> TrimFileExtName(const String<T> &fullname,bool clear_dot=false)
|
||||||
{
|
{
|
||||||
int end=fullname.FindChar(T('?')); //url的文件名,以?为结束
|
int end=fullname.FindChar(T('?')); //url的文件名,以?为结束
|
||||||
|
|
||||||
@@ -225,7 +225,7 @@ namespace hgl
|
|||||||
if(pos==-1)
|
if(pos==-1)
|
||||||
return String<T>();
|
return String<T>();
|
||||||
|
|
||||||
return include_dot? fullname.SubString(0,pos):
|
return clear_dot? fullname.SubString(0,pos):
|
||||||
fullname.SubString(0,pos+1);
|
fullname.SubString(0,pos+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -296,6 +296,45 @@ namespace hgl
|
|||||||
return(String<T>());
|
return(String<T>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 截取完整路径中的路径名和文件名
|
||||||
|
* @param pathname 拆分后的路径名
|
||||||
|
* @param filename 拆分后的文件名
|
||||||
|
* @param fullname 拆分前的完整路径文件名
|
||||||
|
*/
|
||||||
|
template<typename T>
|
||||||
|
inline bool SplitFilename(String<T> &pathname,String<T> &filename,const String<T> &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<typename T>
|
||||||
|
inline String<T> ReplaceExtName(const String<T> &old_name,const String<T> &new_extname,const T split_char='.')
|
||||||
|
{
|
||||||
|
if(old_name.Length()<=1)
|
||||||
|
return(String<T>::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<T>::charOf(split_char)+new_extname;
|
||||||
|
}
|
||||||
|
|
||||||
inline UTF8String MergeFilename(const UTF8String &pathname,const UTF8String &filename) ///<组合路径名与文件名
|
inline UTF8String MergeFilename(const UTF8String &pathname,const UTF8String &filename) ///<组合路径名与文件名
|
||||||
{return MergeFilename<u8char>(pathname,filename,HGL_DIRECTORY_SEPARATOR,HGL_DIRECTORY_SEPARATOR_U8STR);}
|
{return MergeFilename<u8char>(pathname,filename,HGL_DIRECTORY_SEPARATOR,HGL_DIRECTORY_SEPARATOR_U8STR);}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user