Если у меня есть строка, говорящая "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", "");