我的这个字符串包含文件名
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
,这样效率不高。
有什么更好的方式来获取我的文件名并让它返回目录 + 文件名而没有例外?
非常感谢提前!
答案 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);
答案 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"
}