修剪字符串中的字符

时间:2012-06-27 16:42:42

标签: c# string trim

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

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

我试过了:

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

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

我正在使用C#。谢谢你的帮助!

6 个答案:

答案 0 :(得分:15)

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

var filename = Path.GetFileNameWithoutExtension(line);

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

答案 1 :(得分: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;

答案 2 :(得分:7)

Path班级有GetFileNameWithoutExtension

答案 3 :(得分:3)

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

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

答案 4 :(得分:3)

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

答案 5 :(得分:0)

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

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