如果我有一个字符串说“abc.txt”,有没有一个快速的方法来获得一个子字符串,这只是“abc”?

我不能做一个fileName.IndexOf('.'),因为文件名可以是“abc.123.txt”或其他东西,我显然只是想摆脱扩展名(即。“abc.123”)。


当前回答

的路径。GetFileNameWithoutExtension方法提供了作为参数传递的文件名,但没有扩展名,从名称可以明显看出这一点。

其他回答

这个实现应该可以工作。

string file = "abc.txt";
string fileNoExtension = file.Replace(".txt", "");

的路径。GetFileNameWithoutExtension方法提供了作为参数传递的文件名,但没有扩展名,从名称可以明显看出这一点。

    /// <summary>
    /// Get the extension from the given filename
    /// </summary>
    /// <param name="fileName">the given filename ie:abc.123.txt</param>
    /// <returns>the extension ie:txt</returns>
    public static string GetFileExtension(this string fileName)
    {
        string ext = string.Empty;
        int fileExtPos = fileName.LastIndexOf(".", StringComparison.Ordinal);
        if (fileExtPos >= 0)
            ext = fileName.Substring(fileExtPos, fileName.Length - fileExtPos);

        return ext;
    }

你可以使用

string extension = System.IO.Path.GetExtension(filename);

然后手动删除扩展:

string result = filename.Substring(0, filename.Length - extension.Length);

我使用了下面较少的代码

string fileName = "C:\file.docx";
MessageBox.Show(Path.Combine(Path.GetDirectoryName(fileName),Path.GetFileNameWithoutExtension(fileName)));

输出将是

文件C: \