2012-06-27 5 views
5

文字列から部分文字列を削除する必要があります(部分文字列が存在する場合)。文字列の文字を切り取る

特に、文字列が "MainGUI.exe"の場合、文字列から ".exe"をトリミングして "MainGUI"にする必要があります。

私はこの試みた:

 String line = "MainGUI.exe"; 
    char[] exe = {'e', 'x', 'e', '.'}; 
    line.TrimEnd(exe); 

これは私に「MainGui.exe」の正しい答えを与えるが、「MainGUIe.exe」のようなもののために、それは動作しません、私に「MainGUI」の代わりを与えることを"MainGUIe"。

私はC#を使用しています。助けてくれてありがとう!

答えて

15

System.IO名前空間にPath静的クラスを使用すると、ファイル名から拡張子とディレクトリを簡単に削除できます。また、拡張子やフルパスなどを取得するのにも使用できます。これは非常に便利なクラスであり、調べる価値があります。

var filename = Path.GetFileNameWithoutExtension(line); 

は、あなただけの拡張機能をオフにトリミングしたい場合は、あなたが任意のファイル拡張子をトリミングするか、あなたのファイルは常に.exeファイルになるだろう知っていると仮定すると、当然のことながら、これは、あなたに「MainGui」を与えますただし、.exeファイルを別の場所に置いておいてください。最初に、String.EndsWith()を使用するか、Path.GetExtension()メソッドを使用してテストできます。

+0

これは働いていた、あなたは私を助けるためにみんなに感謝! – nat

13

これを処理するには、文字列操作の代わりにPath.GetFileNameWithoutExtensionを使用します。あなただけそれが.exeだ場合は拡張子を取り除くしたい場合は、あなたにもそれをチェックすることができます

string line = “MainGUI.exe”; 
string fileWithoutExtension = Path.GetFileNameWithoutExtension(line); 

。以下は.exeの拡張をはがしますが、そのまま他のすべての拡張機能を残します:

string ext = Path.GetExtension(line).ToLower(); 
string fileWithoutExtension = ext == ".exe" 
           ? Path.GetFileNameWithoutExtension(line) 
           : line; 
+0

これは、.exeだけでなくすべてのファイル拡張子を削除することに注意してください。それはあなたが望むものかもしれません。 – Servy

+0

@Servy編集では、この場合も処理する必要があります... –

3

".exe"をトリミングする場合、残りの文字列に関係なく、最後の4文字を切り捨てることができます。ファイル拡張子なしとして

line.Substring(0, line.Length - ".exe".Length); 
3
string line = "MainGUI.exe"; 
if (line.EndsWith(".exe")) 
    line = line.Substring(0, line.Length - 4); 
0

ドットを持って、その中で、あなたがこれを使用しても安全です(。):

String line = "MainGUI.exe"; 
line = line.Substring(0, line.LastIndexOf('.')); 
関連する問題