web-dev-qa-db-ja.com

ファイル名の文字列からファイル拡張子を削除する

"abc.txt"という文字列がある場合、単に"abc"である部分文字列を取得する簡単な方法はありますか?

fileName.IndexOf('.')を実行することはできません。なぜなら、ファイル名は"abc.123.txt"か何かである可能性があり、私は明らかに拡張子を取り除きたいだけなのです(すなわち"abc.123")。

170
tweetypi

Path.GetFileNameWithoutExtension メソッドは、名前から明らかなように、拡張子を付けずに引数として渡すファイル名を指定します。

328

この目的のためのフレームワーク内のメソッドがあります、それは拡張を除いて完全な道を保つでしょう。

System.IO.Path.ChangeExtension(path, null);

ファイル名だけが必要な場合は、

System.IO.Path.GetFileNameWithoutExtension(path);
211
Ran QUAN

あなたが使用することができます

string extension = System.IO.Path.GetExtension(filename);

その後、手動で拡張子を削除してください。

string result = filename.Substring(0, filename.Length - extension.Length);
52
phdesign

String.LastIndexOfが機能します。

string fileName= "abc.123.txt";
int fileExtPos = fileName.LastIndexOf(".");
if (fileExtPos >= 0 )
 fileName= fileName.Substring(0, fileExtPos);
24
Andrew

拡張子を付けずにフルパスを作成したい場合は、次のようにします。

Path.Combine( Path.GetDirectoryName(fullPath), Path.GetFileNameWithoutExtension(fullPath))

しかし、私はそれをするためのもっと簡単な方法を探しています。誰か考えがありますか?

11
Logman

以下のコードを使用しましたが、コードは少なくなりました


string fileName = "C:\file.docx";
MessageBox.Show(Path.GetDirectoryName(fileName)+"\\"+Path.GetFileNameWithoutExtension(fileName));
   
3
Benjym

文字列操作を使用したい場合は、最後に出現した文字または部分文字列を検索する関数lastIndexOf()を使用できます。 Javaには多数の文字列関数があります。

1
Shraddha

あなたは多分UWP APIを尋ねていないのです。しかしUWPでは、file.DisplayNameは拡張子のない名前です。他の人に役立つことを願っています。

1
sudoer