2011-08-03 23 views
172

私はWPF C#でプログラムします。私は持っています。以下のパス:C#のパス文字列からファイル名を取得します。

C:\Program Files\hello.txt 

、私はそれからの出力「ハロー」にしたいです。

パスは、データベースからの文字列抽出です。それは動作しますが、私はそれに短く、賢く解決策があるはずと信じて

string path = "C:\\Program Files\\hello.txt"; 
string[] pathArr = path.Split('\\'); 
string[] fileArr = pathArr.Last().Split('.'); 
string fileName = fileArr.Last().ToString(); 

:現在、私は次のメソッドを(「」「\」によってパスからの分割は、その後で再び分割)を使用しています。何か案が?

+0

、これを試してみてください'同じ文字列を返しますそれを何らかの理由で "file.cs"に変換しません。私のコードをhttp://rextester.com/のようなオンラインコンパイラにコピー/ペーストすれば、それは動作します...? – jbyrd

答えて

19

あなたは次のようにPath APIを使用することができます

string fileName = Path.GetFileNameWithoutExtension(@"C:\Program Files\hello.txt"); 

これはfileNameに "hello"を返します。

8

はこれを試してみてくださいしてみてください:

20

System.IO.Path.GetFileNameWithoutExtension(path); 

デモ

string fileName = @"C:\mydir\myfile.ext"; 
string path = @"C:\mydir\"; 
string result; 

result = Path.GetFileNameWithoutExtension(fileName); 
Console.WriteLine("GetFileNameWithoutExtension('{0}') returns '{1}'", 
    fileName, result); 

result = Path.GetFileName(path); 
Console.WriteLine("GetFileName('{0}') returns '{1}'", 
    path, result); 

// This code produces output similar to the following: 
// 
// GetFileNameWithoutExtension('C:\mydir\myfile.ext') returns 'myfile' 
// GetFileName('C:\mydir\') returns '' 

https://msdn.microsoft.com/en-gb/library/system.io.path.getfilenamewithoutextension%28v=vs.80%29.aspx

4
string Location = "C:\\Program Files\\hello.txt"; 

string FileName = Location.Substring(Location.LastIndexOf('\\') + 
    1); 
+0

+1これは、ファイル名にPath.GetInvalidChars()の無効な文字[<, >など]が含まれているバックアップとして機能する場合に役立つ可能性があるためです。 – bhuvin

4
を試してみてください

`Path.GetFileName( "C:\\ DEV \\一部\\パス\\ file.csを\\する")は、私のシステムでは

string [email protected]"C:\mydir\myfile.ext"; 
string Result=Path.GetFileName(FilePath);//With Extension 
string Result=Path.GetFileNameWithoutExtension(FilePath);//Without Extension 
+0

最高の投票回答が言うように? – CodeCaster

+0

最高の投票回答に記載されているのとまったく同じ方法を使用しました。 – CodeCaster

0
Namespace: using System.IO; 
//use this to get file name dynamically 
string filelocation = Properties.Settings.Default.Filelocation; 
//use this to get file name statically 
//string filelocation = @"D:\FileDirectory\"; 
string[] filesname = Directory.GetFiles(filelocation); //for multiple files 

Your path configuration in App.config file if you are going to get file name dynamically - 

    <userSettings> 
     <ConsoleApplication13.Properties.Settings> 
      <setting name="Filelocation" serializeAs="String"> 
      <value>D:\\DeleteFileTest</value> 
      </setting> 
       </ConsoleApplication13.Properties.Settings> 
     </userSettings> 
関連する問題