From 3f5baa99d0c0a76135b48fa67b43b9c4d58a8332 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Mon, 3 Mar 2025 22:58:44 +0800 Subject: [PATCH] ReplaceExtName supported find splite_char from left. --- inc/hgl/filesystem/Filename.h | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/inc/hgl/filesystem/Filename.h b/inc/hgl/filesystem/Filename.h index f0fe291..5fcad35 100644 --- a/inc/hgl/filesystem/Filename.h +++ b/inc/hgl/filesystem/Filename.h @@ -341,13 +341,26 @@ namespace hgl return(true); } + /** + * 替换文件扩展名 + * @param old_name 旧文件名 + * @param new_extname 新扩展名 + * @param split_char 拆分字符(默认为.) + * @param from_right 是否从右边开始查找(默认为true) + * @return 新的文件名 + */ template - inline String ReplaceExtName(const String &old_name,const String &new_extname,const T split_char='.') + inline String ReplaceExtName(const String &old_name,const String &new_extname,const T split_char='.',const bool from_right=true) { if(old_name.Length()<=1) return(String::charOf(split_char)+new_extname); - const int pos=old_name.FindRightChar(split_char); + int pos; + + if(from_right) + pos=old_name.FindRightChar(split_char); + else + pos=old_name.FindChar(split_char); if(pos!=-1) return old_name.SubString(0,pos+1)+new_extname;