c# - obtener - Eliminar la extensión de archivo de una cadena de nombre de archivo
obtener ruta de carpeta c# (11)
Si tengo una cadena que dice "abc.txt"
, ¿hay alguna manera rápida de obtener una subcadena que sea solo "abc"
?
No puedo hacer un fileName.IndexOf(''.'')
Porque el nombre del archivo podría ser "abc.123.txt"
o algo así y obviamente quiero deshacerme de la extensión (es decir, "abc.123"
).
El método Path.GetFileNameWithoutExtension
le proporciona el nombre de archivo que pasa como argumento sin la extensión, como debería ser obvio por su nombre.
Esta implementación debería funcionar.
string file = "abc.txt";
string fileNoExtension = file.Replace(".txt", "");
Hay un método en el marco para este propósito, que mantendrá la ruta completa a excepción de la extensión.
System.IO.Path.ChangeExtension(path, null);
Si solo se necesita el nombre de archivo, use
System.IO.Path.GetFileNameWithoutExtension(path);
Puedes usar
string extension = System.IO.Path.GetExtension(filename);
Y luego elimine la extensión manualmente:
string result = filename.Substring(0, filename.Length - extension.Length);
Quizás no estés preguntando a la API de UWP. Pero en UWP, file.DisplayName
es el nombre sin extensiones. Espero que sea útil para otros.
Si desea crear una ruta completa sin extensión, puede hacer algo como esto:
Path.Combine( Path.GetDirectoryName(fullPath), Path.GetFileNameWithoutExtension(fullPath))
pero estoy buscando una forma más simple de hacerlo. ¿Alguien tiene alguna idea?
String.LastIndexOf funcionaría.
string fileName= "abc.123.txt";
int fileExtPos = fileName.LastIndexOf(".");
if (fileExtPos >= 0 )
fileName= fileName.Substring(0, fileExtPos);
Utilicé el siguiente código, menos
string fileName = "C:/file.docx";
MessageBox.Show(Path.GetDirectoryName(fileName)+"//"+Path.GetFileNameWithoutExtension(fileName));
// salida será "C: / file"
si desea utilizar el funcionamiento de String, puede utilizar la función lastIndexOf () que busca la última aparición de un carácter o subcadena. Java tiene numerosas funciones de cadenas.
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!!!");
}
}
/// <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;
}