5

その部分文字列が存在する場合、文字列から部分文字列をトリミングする必要があります。

具体的には、文字列が「MainGUI.exe」の場合、文字列から「.exe」を削除して「MainGUI」にする必要があります。

私はこれを試しました:

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

これにより、「MainGui.exe」の正しい答えが得られますが、「MainGUIe.exe」のようなものでは機能せず、「MainGUIe」ではなく「MainGUI」が表示されます。

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

4

6 に答える 6

15

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

var filename = Path.GetFileNameWithoutExtension(line);

「MainGui」が表示されます。もちろん、これは、ファイル拡張子を削除したい場合、または.exeファイルから拡張子のみを削除したい場合、ファイルが常に.exeファイルになることがわかっていることを前提としていますが、そして他人に任せる。String.EndsWith()メソッドを使用するか、メソッドを使用して、最初にテストできますPath.GetExtension()

于 2012-06-27T16:44:32.470 に答える
13

これを処理するには、文字列操作の代わりにPath.GetFileNameWithoutExtensionを使用します。

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

拡張子が の場合にのみ拡張子を取り除きたい場合は.exe、それも確認できます。次の例では、 の拡張子のみが取り除かれますが.exe、他のすべての拡張子はそのまま残ります。

string ext = Path.GetExtension(line).ToLower();
string fileWithoutExtension = ext == ".exe" 
                               ? Path.GetFileNameWithoutExtension(line) 
                               : line;
于 2012-06-27T16:45:02.317 に答える
7

PathクラスにはGetFileNameWithoutExtension.

于 2012-06-27T16:45:17.453 に答える
3
string line = "MainGUI.exe";
if (line.EndsWith(".exe"))
    line = line.Substring(0, line.Length - 4);
于 2012-06-27T16:53:18.963 に答える
3

常に「.exe」をトリミングしている場合は、文字列の残りの部分に関係なく、最後の 4 文字をトリミングできます。

line.Substring(0, line.Length - ".exe".Length);
于 2012-06-27T16:47:11.983 に答える
0

ファイル拡張子にはドット(。)が含まれていないため、これを使用しても安全です。

String line = "MainGUI.exe";
line = line.Substring(0, line.LastIndexOf('.'));
于 2012-12-26T10:21:40.440 に答える