在我的C#应用中,我正在使用Path.GetExtension()
。
输入到此将取决于文件处理。有时我的文件名可能有myfile-<ID>
。我将在稍后阶段处理ID值,因此在检查扩展时我无法删除<>
。
GetExtension()
抛出无效字符的异常。当filename
可能包含无效字符时,检查文件是否有扩展名的最佳方法是什么。
答案 0 :(得分:1)
这会给你和.Extension,比如GetExtension do
Dim sPath,sExt As String
sPath = "c:\namename<2>.RAR"
If sPath.LastIndexOf(CChar(".")) <> -1
sExt = sPath.Substring(sPath.LastIndexOf(CChar(".")))
Else
sExt = Nothing 'no extension?
End if
抱歉,您要求提供C#
string sPath = null;
string sExt = null;
sPath = "c:\\namename<2>.RAR";
if (sPath.LastIndexOf(Convert.ToChar(".")) != -1) {
sExt = sPath.Substring(sPath.LastIndexOf('.')));
} else {
sExt = null; //no extension?
}
修改强> 如果路径中有“。”
string sPath = null;
string sExt = null;
sPath = "c:\\folder.folder\folder\namename<2>.RAR";
sPath = sPath.Substring(sPath.LastIndexOf('\')));
if (sPath.LastIndexOf('.') != -1) {
sExt = sPath.Substring(sPath.LastIndexOf('.'));
} else {
sExt = null; //no extension?
}
答案 1 :(得分:1)
使用 GetExtension(路径)方法查找扩展程序时,您可以清理使用该路径,而不是按原样使用路径。
以下是它的扩展方法:
using System.IO;
using System.Linq;
public static class FileNameExtensions
{
public static string ToValidPath(this string path)
{
return Path.GetInvalidFileNameChars()
.Aggregate(path, (previous, current) => previous.Replace(current.ToString(), string.Empty));
}
}
因此,您现在可以使用以下参数调用GetExtension方法: GetExtension(path.ToValidPath());