从字符串中删除字符

5

如果存在子字符串,我需要从字符串中剪切掉它。

具体来说,如果字符串为“MainGUI.exe”,则需要去掉“.exe”,使其变成“MainGUI”。

我尝试了以下方法:

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

这为我提供了“MainGui.exe”的正确答案,但对于像“MainGUIe.exe”这样的内容,它不起作用,会给我“MainGUI”而不是“MainGUIe”。我正在使用C#。感谢您的帮助!
6个回答

15

使用System.IO命名空间中的Path静态类,可以轻松地从文件名中剥离扩展名和目录。您还可以使用它来获取扩展名、完整路径等信息。 这是一个非常方便的类,值得研究。

var filename = Path.GetFileNameWithoutExtension(line);

给你“MainGui”,当然,这是假设你想要去掉任何文件扩展名或你知道你的文件总是一个.exe文件,如果你只想剥离.exe文件的扩展名而保留其他文件的扩展名,则可以通过使用String.EndsWith()方法或使用Path.GetExtension()方法进行测试。


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;

请注意,这将删除所有文件扩展名,而不仅仅是 .exe 扩展名。这可能是您想要的,也可能不是。 - Servy

7

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('.'));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接