"abc.txt"
という文字列がある場合、単に"abc"
である部分文字列を取得する簡単な方法はありますか?
fileName.IndexOf('.')
を実行することはできません。なぜなら、ファイル名は"abc.123.txt"
か何かである可能性があり、私は明らかに拡張子を取り除きたいだけなのです(すなわち"abc.123"
)。
Path.GetFileNameWithoutExtension
メソッドは、名前から明らかなように、拡張子を付けずに引数として渡すファイル名を指定します。
この目的のためのフレームワーク内のメソッドがあります、それは拡張を除いて完全な道を保つでしょう。
System.IO.Path.ChangeExtension(path, null);
ファイル名だけが必要な場合は、
System.IO.Path.GetFileNameWithoutExtension(path);
あなたが使用することができます
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);
拡張子を付けずにフルパスを作成したい場合は、次のようにします。
Path.Combine( Path.GetDirectoryName(fullPath), Path.GetFileNameWithoutExtension(fullPath))
しかし、私はそれをするためのもっと簡単な方法を探しています。誰か考えがありますか?
以下のコードを使用しましたが、コードは少なくなりました
string fileName = "C:\file.docx";
MessageBox.Show(Path.GetDirectoryName(fileName)+"\\"+Path.GetFileNameWithoutExtension(fileName));
文字列操作を使用したい場合は、最後に出現した文字または部分文字列を検索する関数lastIndexOf()を使用できます。 Javaには多数の文字列関数があります。
あなたは多分UWP APIを尋ねていないのです。しかしUWPでは、file.DisplayName
は拡張子のない名前です。他の人に役立つことを願っています。