如果我有一个字符串说“abc.txt”,有没有一个快速的方法来获得一个子字符串,这只是“abc”?
我不能做一个fileName.IndexOf('.'),因为文件名可以是“abc.123.txt”或其他东西,我显然只是想摆脱扩展名(即。“abc.123”)。
如果我有一个字符串说“abc.txt”,有没有一个快速的方法来获得一个子字符串,这只是“abc”?
我不能做一个fileName.IndexOf('.'),因为文件名可以是“abc.123.txt”或其他东西,我显然只是想摆脱扩展名(即。“abc.123”)。
当前回答
如果你想创建没有扩展的完整路径,你可以这样做:
Path.Combine( Path.GetDirectoryName(fullPath), Path.GetFileNameWithoutExtension(fullPath))
但我想找一种更简单的方法。有人知道吗?
其他回答
框架中有一个用于此目的的方法,该方法将保留除扩展之外的完整路径。
System.IO.Path.ChangeExtension(path, null);
如果只需要文件名,请使用
System.IO.Path.GetFileNameWithoutExtension(path);
你可以使用
string extension = System.IO.Path.GetExtension(filename);
然后手动删除扩展:
string result = filename.Substring(0, filename.Length - extension.Length);
这个实现应该可以工作。
string file = "abc.txt";
string fileNoExtension = file.Replace(".txt", "");
的路径。GetFileNameWithoutExtension方法提供了作为参数传递的文件名,但没有扩展名,从名称可以明显看出这一点。
ReadOnlySpan<char> filename = "abc.def.ghi.txt";
var fileNameWithoutExtension = RemoveFileExtension(filename); //abc.def.ghi
string RemoveFileExtension(ReadOnlySpan<char> path)
{
var lastPeriod = path.LastIndexOf('.');
return (lastPeriod < 0 ? path : path[..lastPeriod]).ToString();
}