Ответ 1
Метод Path.GetFileNameWithoutExtension
дает вам имя файла, которое вы передаете в качестве аргумента без расширения, что должно быть очевидно из имени.
Если у меня есть строка, говорящая "abc.txt"
, есть ли быстрый способ получить подстроку, которая просто "abc"
?
Я не могу сделать fileName.IndexOf('.')
, потому что имя файла может быть "abc.123.txt"
или что-то еще, и я, очевидно, просто хочу избавиться от расширения (т.е. "abc.123"
).
Метод 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.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))
но я ищу более простой способ сделать это. Кто-нибудь знает?
Я использовал ниже, меньше кода
string fileName = "C:\file.docx";
MessageBox.Show(Path.Combine(Path.GetDirectoryName(fileName),Path.GetFileNameWithoutExtension(fileName)));
Вывод будет
C:\file
если вы хотите использовать операцию String, вы можете использовать функцию lastIndexOf(), которая ищет последнее вхождение символа или подстроки. Java имеет множество строковых функций.
Возможно, вы не попросите UWP api.
Но в UWP file.DisplayName
- это имя без расширений. Надеюсь, полезно для других.
/// <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;
}
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!!!");
}
}
Эта реализация должна работать.
string file = "abc.txt";
string fileNoExtension = file.Replace(".txt", "");