जवाबों:
Path.GetFileNameWithoutExtension
विधि आप फ़ाइल नाम आप विस्तार के बिना एक तर्क के रूप पारित, जैसा कि नाम से स्पष्ट होना चाहिए देता है।
इस उद्देश्य के लिए रूपरेखा में एक विधि है, जो विस्तार को छोड़कर पूरा रास्ता बनाए रखेगी।
System.IO.Path.ChangeExtension(path, null);
यदि केवल फ़ाइल नाम की आवश्यकता है, तो उपयोग करें
System.IO.Path.GetFileNameWithoutExtension(path);
null
यहाँ एक जादू महत्व है। यदि आप String.Empty
उर्फ का उपयोग करते हैं तो आपको ""
एक अनुगामी [ .
] डॉट के साथ छोड़ दिया जाएगा ।
GetFileNameWithoutExtension
अधिक स्पष्ट है। हालांकि इसके संभावित अवांछित दुष्प्रभाव और इससे बचने के लिए एक विकल्प के अस्तित्व के बारे में जानना अच्छा है।
आप उपयोग कर सकते हैं
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);
foo/bar.cat/cheese
!
String.LastIndexOf
इस तरह से कुछ पूरा करने के लिए खतरनाक है। बिना एक्सटेंशन वाली फ़ाइलों के लिए, जैसा कि @Cameron ने ऊपर कहा है, आपके परिणाम वही हो सकते हैं जो आप चाहते हैं। ऐसा करने का सबसे सुरक्षित तरीका @ लॉगमैन के उत्तर
मैंने नीचे, कम कोड का उपयोग किया
string fileName = "C:\file.docx";
MessageBox.Show(Path.Combine(Path.GetDirectoryName(fileName),Path.GetFileNameWithoutExtension(fileName)));
आउटपुट होगा
C: \ फ़ाइल
Path.Combine()
निर्दिष्ट करने के बजाय उपयोग करें "\\"
।
मुझे पता है कि यह एक पुराना सवाल है और Path.GetFileNameWithoutExtension
एक बेहतर और शायद क्लीनर विकल्प है। लेकिन व्यक्तिगत रूप से मैंने इस दो तरीकों को अपनी परियोजना में जोड़ा है और उन्हें साझा करना चाहता हूं। पर्वतमाला और सूचकांकों के उपयोग के कारण इसके लिए C # 8.0 की आवश्यकता होती है।
public static string RemoveExtension(this string file) => ReplaceExtension(file, null);
public static string ReplaceExtension(this string file, string extension)
{
var split = file.Split('.');
if (string.IsNullOrEmpty(extension))
return string.Join(".", split[..^1]);
split[^1] = extension;
return string.Join(".", split);
}
/// <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", "");
abc.txt.pdf
? :-)