处理多个'。'在文件扩展名中

时间:2017-06-29 19:48:16

标签: c# io

我的这个字符串包含文件名

string filename = "C:\\Users\\me\\Desktop\\filename.This.Is.An.Extension"

我尝试使用传统的

string modifiedFileName = System.IO.Path.GetFileNameWithoutExtension(filename);

但它只能让我:

modifiedFileName = "C:\\Users\\me\\Desktop\\filename.This.Is.An"

为了让我获得"C:\\Users\\me\\Desktop\\filename",我必须多次使用System.IO.Path.GetFileNameWithoutExtension,这样效率不高。

有什么更好的方式来获取我的文件名并让它返回目录 + 文件名而没有例外

非常感谢提前!

3 个答案:

答案 0 :(得分:1)

获取目录和基本名称:

var directoryPath = Path.GetDirectoryName(filename);
var baseName = Path.GetFileName(filename);

删除基本名称的“扩展名”:

var baseNameWithoutExtensions = baseName.Split(new[] {'.'}, 2)[0];

重新组合:

var modifiedFileName = Path.Combine(directoryPath, baseNameWithoutExtensions);

demo

答案 1 :(得分:0)

如果你想在第一期停止,你必须自己处理。

Path.GetDirectoryName(filepath) + Path.GetFileName(filepath).UpTo(".")

使用此string扩展程序:

public static string UpTo(this string s, string stopper) => s.Substring(0, Math.Max(0, s.IndexOf(stopper)));

答案 2 :(得分:0)

没有内置功能:

public static void Main(string[] args)
{
    string s = "C:\\Users\\me\\Desktop\\filename.This.Is.An.Extension";
    string newString="";
    for(int i=0;i<s.Length;i++)
    {
        if(s[i]=='.'){
            break;
        }else{
           newString += s[i].ToString();
        }
    }
    Console.WriteLine(newString); //writes "C:\Users\me\Desktop\filename"
}