5

如果该子字符串存在,我需要从字符串中修剪子字符串。

具体来说,如果字符串是“MainGUI.exe”,那么我需要通过从字符串中修剪“.exe”将其变为“MainGUI”。

我试过这个:

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

这给了我“MainGui.exe”的正确答案,但是对于“MainGUIe.exe”之类的东西它不起作用,给了我“MainGUI”而不是“MainGUIe”。

我正在使用 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

如果您总是修剪“.exe”,则无论字符串的其余部分如何,您都可以修剪最后 4 个字符。

line.Substring(0, line.Length - ".exe".Length);
于 2012-06-27T16:47:11.983 回答
3
string line = "MainGUI.exe";
if (line.EndsWith(".exe"))
    line = line.Substring(0, line.Length - 4);
于 2012-06-27T16:53:18.963 回答
0

由于没有文件扩展名中包含点 (.),因此您可以安全地使用它:

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