286

私はWPF C#でプログラミングしています。たとえば、次のパスがあります。

C:\Program Files\hello.txt

そしてそこから抽出したいhello

パスはstringデータベースから取得されます。現在、次のコードを使用してパスを分割し'\'、次に再度分割してい'.'ます。

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

それはうまくいきますが、それにはもっと短くて賢い解決策があるべきだと私は信じています。何か案が?

4

10 に答える 10

544

Path.GetFileName

読み取り専用の文字スパンで表されるファイル パスのファイル名と拡張子を返します。


Path.GetFileNameWithoutExtension

読み取り専用の文字スパンで表されるファイル パスの拡張子を除いたファイル名を返します。


Pathクラスは素晴らしいです。

于 2011-08-03T02:47:57.870 に答える
95

試す

fileName = Path.GetFileName (path);

http://msdn.microsoft.com/de-de/library/system.io.path.getfilename.aspx

于 2011-08-03T02:48:58.380 に答える
31

試す

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

于 2011-08-03T02:50:00.023 に答える
29

次のようにパスAPI を使用できます。

 var filenNme = Path.GetFileNameWithoutExtension([File Path]);

詳細: Path.GetFileNameWithoutExtension

于 2011-08-03T02:48:44.527 に答える
19
var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(path);

Path.GetFileNameWithoutExtension

于 2011-08-03T02:50:22.870 に答える
11

これを試して:

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

これにより、fileName に対して「hello」が返されます。

于 2011-08-03T02:49:49.840 に答える