Удалить расширение файла из строки имени файла

Если у меня есть строка, говорящая "abc.txt", есть ли быстрый способ получить подстроку, которая просто "abc"?

Я не могу сделать fileName.IndexOf('.'), потому что имя файла может быть "abc.123.txt" или что-то еще, и я, очевидно, просто хочу избавиться от расширения (т.е. "abc.123").

Ответ 1

Метод Path.GetFileNameWithoutExtension дает вам имя файла, которое вы передаете в качестве аргумента без расширения, что должно быть очевидно из имени.

Ответ 2

В рамках этой цели существует метод, который будет содержать полный путь, кроме расширения.

System.IO.Path.ChangeExtension(path, null);

Если требуется только имя файла, используйте

System.IO.Path.GetFileNameWithoutExtension(path);

Ответ 3

Вы можете использовать

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

И затем удалите расширение вручную:

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

Ответ 4

String.LastIndexOf будет работать.

string fileName= "abc.123.txt";
int fileExtPos = fileName.LastIndexOf(".");
if (fileExtPos >= 0 )
 fileName= fileName.Substring(0, fileExtPos);

Ответ 5

Если вы хотите создать полный путь без расширения, вы можете сделать что-то вроде этого:

Path.Combine( Path.GetDirectoryName(fullPath), Path.GetFileNameWithoutExtension(fullPath))

но я ищу более простой способ сделать это. Кто-нибудь знает?

Ответ 6

Я использовал ниже, меньше кода

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

Вывод будет

C:\file

Ответ 7

если вы хотите использовать операцию String, вы можете использовать функцию lastIndexOf(), которая ищет последнее вхождение символа или подстроки. Java имеет множество строковых функций.

Ответ 8

Возможно, вы не попросите UWP api. Но в UWP file.DisplayName - это имя без расширений. Надеюсь, полезно для других.

Ответ 9

    /// <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;
    }

Ответ 10

        private void btnfilebrowse_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            //dlg.ShowDialog();
            dlg.Filter = "CSV files (*.csv)|*.csv|XML files (*.xml)|*.xml";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                string fileName;
                fileName = dlg.FileName;
                string filecopy;
                filecopy = dlg.FileName;
                filecopy = Path.GetFileName(filecopy);
                string strFilename;
                strFilename = filecopy;
                 strFilename = strFilename.Substring(0, strFilename.LastIndexOf('.'));
                //fileName = Path.GetFileName(fileName);             

                txtfilepath.Text = strFilename;

                string filedest = System.IO.Path.GetFullPath(".\\Excels_Read\\'"+txtfilepath.Text+"'.csv");
               // filedest = "C:\\Users\\adm\\Documents\\Visual Studio 2010\\Projects\\ConvertFile\\ConvertFile\\Excels_Read";
                FileInfo file = new FileInfo(fileName);
                file.CopyTo(filedest);
             // File.Copy(fileName, filedest,true);
                MessageBox.Show("Import Done!!!");
            }
        }

Ответ 11

Эта реализация должна работать.

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