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