Удалить расширение файла из строки имени файла - PullRequest
174 голосов
/ 09 сентября 2011

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

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

Ответы [ 11 ]

332 голосов
/ 09 сентября 2011

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

215 голосов
/ 06 августа 2014

Для этого в рамках есть метод, который сохранит полный путь, кроме расширения.

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

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

System.IO.Path.GetFileNameWithoutExtension(path);
53 голосов
/ 09 сентября 2011

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

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

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

string result = filename.Substring(0, filename.Length - extension.Length);
25 голосов
/ 09 сентября 2011

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

string fileName= "abc.123.txt";
int fileExtPos = fileName.LastIndexOf(".");
if (fileExtPos >= 0 )
 fileName= fileName.Substring(0, fileExtPos);
11 голосов
/ 23 октября 2013

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

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

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

3 голосов
/ 05 марта 2015

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

<code>
string fileName = "C:\file.docx";
MessageBox.Show(Path.GetDirectoryName(fileName)+"\\"+Path.GetFileNameWithoutExtension(fileName));
   
// вывод будет "C: \ file"
1 голос
/ 30 июня 2017

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

1 голос
/ 09 сентября 2011

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

0 голосов
/ 07 июля 2015

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

string file = "abc.txt";
string fileNoExtension = file.Replace(".txt", "");
0 голосов
/ 11 мая 2015
        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!!!");
            }
        }
...