C# 从字符串中删除字符

C# 从字符串中删除字符,c#,string,trim,C#,String,Trim,我需要从字符串中修剪一个子字符串,如果该子字符串存在的话 具体地说,如果字符串是“MainGUI.exe”,那么我需要通过从字符串中修剪“.exe”使其成为“MainGUI” line.Substring(0, line.Length - ".exe".Length); 我试过这个: String line = "MainGUI.exe"; char[] exe = {'e', 'x', 'e', '.'}; line.TrimEnd(exe); 这给了我“Ma

我需要从字符串中修剪一个子字符串,如果该子字符串存在的话

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

line.Substring(0, line.Length - ".exe".Length);
我试过这个:

     String line = "MainGUI.exe";
     char[] exe = {'e', 'x', 'e', '.'};
     line.TrimEnd(exe);
这给了我“MainGui.exe”的正确答案,但对于像“MainGui.exe”这样的东西,它不起作用,给我“MainGui”而不是“MainGui”


我用的是C#。谢谢你的帮助

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

var filename = Path.GetFileNameWithoutExtension(line);
给你“MainGui”,当然,这是假设你想修剪任何文件扩展名,或者你知道你的文件总是一个.exe文件,如果你只想修剪.exe文件的扩展名,而把它留给别人。您可以首先使用
String.EndsWith()
或使用
Path.GetExtension()
方法进行测试。

我将使用而不是字符串操作来处理此问题

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”,则可以修剪掉最后4个字符,而不考虑字符串的其余部分

line.Substring(0, line.Length - ".exe".Length);

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

String line = "MainGUI.exe";
line = line.Substring(0, line.LastIndexOf('.'));

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