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

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

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


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


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

  Система  .IO.Path.ChangeExtension (path, null);  

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

  System.IO  .Path.GetFileNameWithoutExtension (путь);  


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

  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 extension = System.IO.Path.GetExtension (filename);  

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

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

String.LastInd exOf будет работать.

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


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

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

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

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

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


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

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

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


Я использовал приведенный ниже, без кода

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

Результатом будет

C:file


Я использовал приведенную ниже строку без кода

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

Вывод будет

C: файл


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


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


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


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


Я знаю, что это старый вопрос, а Path.GetFileNameWithoutExtension — это лучший и, возможно, более чистый вариант. Но лично я добавил эти два метода в свой проект и хотел ими поделиться. Для этого требуется C # 8.0 из-за использования диапазонов и индексов.

  общедоступная статическая строка RemoveExtension (этот строковый файл) => ReplaceExtension (file, null); общедоступная статическая строка ReplaceExtension (это  строковый файл, расширение строки) {var split = file.Split ('.');  if (string.IsNullOrEmpty (extension)) return string.Join (".", split [.. ^ 1]);  разделить [^ 1] = расширение;  return string.Join (".", split);}  


Я знаю, что это старый вопрос и Путь. GetFileNameWithoutExtension — лучший и, возможно, более чистый вариант. Но лично я добавил эти два метода в свой проект и хотел ими поделиться. Для этого требуется C # 8.0 из-за использования диапазонов и индексов.

  общедоступная статическая строка RemoveExtension (этот строковый файл) => ReplaceExtension (file, null); общедоступная статическая строка ReplaceExtension (это  строковый файл, расширение строки) {var split = file.Split ('.');  if (string.IsNullOrEmpty (extension)) return string.Join (".", split [.. ^ 1]);  разделить [^ 1] = расширение;  return string.Join (".", split);}  

 //////Получить расширение из заданного имени файла////// из заданного имени файла, например: abc.123.txt /// расширение, например: txt  общедоступная статическая строка GetFileExtension (эта строка имя_файла) {строка ext = string.Empty;  int fileExtPos = имя_файла.LastIndexOf (".", StringComparison.Ordinal);  if (fileExtPos> = 0) ext = fileName.Substring (fileExtPos, fileName.Length - fileExtPos);  вернуть доб;  }  


 //////Получить расширение из заданного имени файла/// /// данное имя файла, например: abc.123.txt /// расширение, то есть: txt  общедоступная статическая строка GetFileExtension (это  строка имя_файла) {строка ext = строка.Empty;  int fileExtPos = имя файла.LastIndexOf (".", StringComparison.Ordinal);  if (fileExtPos> = 0) ext = fileName.Substring (fileExtPos, fileName.Length - fileExtPos);  вернуть доб;  }  

Оцените статью
techsly.ru
Добавить комментарий